Vue基本用法:计算属性和监听器

watch 监听器:

watch 用于监听单一属性(可以是多个单一属性)。

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <span>{{ msg }}</span>
        <br>
        <button @click="msg = 'NEO'">修改</button>
    </div>
</body>
<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        data(){
            return {
                msg:"neo"
            }
        },

        // watch 监听器对应的是一个 对象;watch 可以监听多个单个的属性(如: msg)
        watch: {
            msg: function(vals){    // msg 就是 Vue data 中的 msg, 其对应的是一个 函数,函数有一个参数
                console.log(vals)   // NEO

                // 写自己的监听逻辑
                if (vals == "NEO"){
                    this.msg = "大NEO"
                }
            }
        }
    })
</script>
</html>

watch 官方文档:

https://cn.vuejs.org/v2/guide/computed.html#%E4%BE%A6%E5%90%AC%E5%99%A8

 

计算属性:

计算属性可用于监听多个属性

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!-- 直接调用 计算属性中的 key -->
        <p>{{ myMsg }}</p>
        <button @click="clickHander">修改</button>
    </div>
    
</body>
<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        data(){
            return {
                msg: "neo",
                age: 30
            }
        },

        methods: {
            clickHander(){
                // 此时 this 指向的是 当前对象,即 Vue 对象
                this.msg = "大大NEO",
                this.age = 18
            }
        },

        // computed 计算属性, 对应的是一个对象; 计算属性默认只有 getter 方法
        computed:{
            myMsg: function(){  // 计算属性能够监听多个属性,如下,监听了 msg 和 age
                console.log(this)   // 此时 this 指向的是 当前对象,即 Vue 对象

                // 写自己的业务逻辑

                return `我的名字是“${this.msg}”,年龄是“${this.age}”`
            }
        }

        // 定时器 和 ajax 等(你用别人的函数 )中要用 箭头函数, setInterval(function(){}, sec) 这是一个闭包,会改变其中匿名函数中 this 的指向,所以此时要用 箭头函数把 this 的指向变为 Vue 对象; 如上 methods 和 computed 中的函数 function(){}, 其中 this 本来就是指向当前对象,即 Vue 对象

        // 计算属性的方法既可以在 指令系统 中用,也可以在模板语法中用 
    })
</script>
</html>

 

官网文档: https://cn.vuejs.org/v2/guide/computed.html#%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7

 

 

 

 

 

 

 

 

 

end ...

上一篇:computed 和 method 都能实现的一个功能,建议使用 computed,因为有缓存


下一篇:详解Vue中的computed和watch