如何快速上手Vue框架?(下)

简介: 如何快速上手Vue框架?(下)

十一. Vue如何进行属性的侦听

释义:

属性侦听是指在Vue实例中,监听某个属性的变化,当属性发生变化时,执行相应的操作。

功能:

当数据模型的值放生变化时,被Vue监听到,然后执行一个函数

案例:尊姓和大名后面的文本要随着用户输入的值变化而变化,且全名中的文本也要一起变化

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
<p>尊姓:{{firstname}}</p>
<p>大名:{{lastname}}</p>
<input type="text" v-model="firstname"><br>
<input type="text" v-model="lastname">
    <p>全名:{{fullname}}</p>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            firstname:"本",
            lastname:"拉登",
            fullname:"本.拉登"
        },
        methods:{},
        watch:{
            firstname: function () {
                this.fullname=this.firstname+"."+this.lastname;
            },
            lastname: function () {
                this.fullname=this.firstname+"."+this.lastname;
            }
        }
    })
</script>
</body>
</html>


十二. Vue的生命周期

Vue生命周期详细图解如下:

①官网版

②中文图解版

对象的创建前beforeCreate

对象的创建后created

渲染(挂载)前beforeMount

渲染(挂载)后mounted

修改前beforeUpdate

修改后updated

销毁前beforeDestroy

销毁后Destroy


十三. 钩子函数

功能:

让开发者在vue的生命周期阶段执行自定义函数

位置:

和el/data/methods/watch同级别

案例:创建自定义函数模拟演示beforeCreate,created,beforeMount,mounted这四种生命周期的状态

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <div id="div01">{{msg}}</div>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            msg:"这是div中的内容"
        },
        methods:{
            fun01:function () {
                console.log("这是fun01函数");
            }
        },
        beforeCreate:function () {
            console.log("vue对象初始化前执行...");
            console.log(this.msg);//没有
            this.fun01();//报错
        },
        created:function () {
            console.log("vue对象初始化后执行...");
            console.log(this.msg);//有值
            this.fun01();//可以调用到
        },
        beforeMount:function () {
            console.log("vue对象渲染前执行...");
            console.log(document.getElementById("div01").innerText);//{{msg}}
        },
        mounted:function () {
            console.log("vue对象渲染后执行...");
            console.log(document.getElementById("div01").innerText);//这是div中的内容
        }
    })
</script>
</body>
</html>


十四. 综合案例:Vue版动态表格

案例需求

  • ① 创建一个table,初始化员工的一些信息(编号、姓名、年龄、专业等)
  • ② 创建一个表单,用户输入员工的信息
  • ③ 表单中创建添加按钮,点击添加按钮,输入的员工信息追加到表格内
  • ④ 每条员工信息后都有一个删除的超链接,点击删除,删除当前员工信息

案例图解

案例代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue实现动态表格</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <table border="1" cellspacing="0px" width="250px"  align="center" id="users">
        <tr>
            <th>序号</th>
            <th>用户</th>
            <th>性别</th>
            <th>操作</th>
        </tr>
        <tr v-for="student in students">
            <td>{{student.id}}</td>
            <td>{{student.name}}</td>
            <td>{{student.gender}}</td>
            <td>
                <input type="button" value="删除" @click="deleteUser" >
            </td>
       </tr>
    </table>
    <table border="0" cellspacing="0px" width="250px"  align="center" id="input">
        <tr>
            <td>序号</td>
            <td colspan="3"><input type="text" v-model:value="id" > </td>
        </tr>
        <tr>
            <td>姓名</td>
            <td colspan="3"><input type="text" v-model:value="name" ></td>
        </tr>
        <tr>
            <td>性别</td>
            <td colspan="3"><input type="text" v-model:value="gender" ></td>
        </tr>
        <tr>
            <td colspan="4" align="center">
                <input type="button" value="添加用户"  @click="addUser">
            </td>
        </tr>
    </table>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            students:[
                {
                    id:1,
                    name:"张三",
                    gender:"男",
                },
                {
                    id:2,
                    name:"李四",
                    gender:"女"
                },
                {
                    id:3,
                    name:"王五",
                    gender:"男"
                }
                ],
            id:"null",
            name:"null",
            gender:"null",
        },
        methods:{
            //删除用户
            deleteUser:function () {
               //event.target.parentNode --> 获取触发单击事件的按钮元素的父元素
                //event.target.parentElement  --> 获取触发单击事件的按钮元素的父元素
                event.target.parentElement.parentElement.remove();
            },
            //思路:将新添加的数据加入到data中students数组中,即可
            addUser:function () {
                var data= new Object();
                data.id=this.id;
                data.name=this.name;
                data.gender=this.gender;
                this.students.push(data);
            }
        }
    })
</script>
</body>
</html>

相关文章
|
1天前
|
JavaScript
vue打印v-model 的值
vue打印v-model 的值
|
1天前
|
JavaScript
vue知识点
vue知识点
4 1
|
2天前
|
JavaScript
Vue实战-组件通信
Vue实战-组件通信
4 0
|
2天前
|
JavaScript
Vue实战-将通用组件注册为全局组件
Vue实战-将通用组件注册为全局组件
5 0
|
2天前
|
JavaScript 前端开发
vue的论坛管理模块-文章评论02
vue的论坛管理模块-文章评论02
|
2天前
|
JavaScript Java
vue的论坛管理模块-文章查看-01
vue的论坛管理模块-文章查看-01
|
2天前
|
JavaScript
vue页面加载时同时请求两个接口
vue页面加载时同时请求两个接口
|
2天前
|
JavaScript
vue里样式不起作用的方法,可以通过deep穿透的方式
vue里样式不起作用的方法,可以通过deep穿透的方式
10 0
|
2天前
|
移动开发 JavaScript 应用服务中间件
vue打包部署问题
Vue项目`vue.config.js`中,`publicPath`设定为&quot;/h5/party/pc/&quot;,在线环境基于打包后的`dist`目录,而非Linux的`/root`。Nginx代理配置位于`/usr/local/nginx/nginx-1.13.7/conf`,包含两个相关配置图。
vue打包部署问题
|
2天前
|
JavaScript 前端开发
iconfont 图标在vue里的使用
iconfont 图标在vue里的使用
11 0