zoukankan      html  css  js  c++  java
  • Vue之监听数据变化watch、computed、methods

    一、业务场景:前两个文本框中输入值,最后一个文本框自动监听前面输入的值

     方式一:使用事件绑定机制@keyup,在methods中写入监听方法

    <body>
        <div id="app">
            firstName:<input type="text" v-model="firstname" @keyup="getFullName">+
            lastName<input type="text" v-model="lastname" @keyup="getFullName2">=
            <input type="text" v-model="fullname" >
            <p>{{fullname}}</p>
        </div>
    
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    firstname: '',
                    lastname: '',
                    fullname: ''
                },
                methods: {
                    getFullName(){
                        this.fullname = this.firstname + this.lastname
                    },
                    getFullName2(){
                        this.fullname = this.firstname + this.lastname
                    }
                }
            })
        </script>
    </body>

    方法二:使用watch监听文本变化

    使用watch属性 可以监视data中指定数据的变化 然后触发这个watch中对应的处理方法

    <body>
        <div id="app">
            <input type="text" v-model="firstname" >+
            <input type="text" v-model="lastname" >=
            <input type="text" v-model="fullname" >
        </div>
    
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    firstname: '',
                    lastname: '',
                    fullname: ''
                },
                methods: {},
                watch: { //使用这个属性 可以监视data中指定数据的变化 然后触发这个watch中对应的处理方法
                //firstname可加 可不加引号 但如果是first-name 必须要加引号
                   firstname: function(newVal, oldVal){
                      console.log('监视变化')
                      this.fullname = newVal + '-' + this.lastname
                },
                    lastname: function (newVal) {
                        this.fullname = this.firstname + '-' + newVal
                    }
                }
            })
        </script>
    </body>

    方法三:使用computed计算文本值

    在computed中可以定义一些属性 这些属性叫【计算属性】 计算属性的本质就是一个方法,只不过在使用这些计算属性的时候 就把他们的名称当做属性来使用

    注意:

    1. 计算属性(方法)在引用时一定不要加() 直接把它当做普通属性去使用就好了
    2. 只要计算属性这个function内部所用到的任何data中的数据发生了变化 就会重新计算这个计算属性的值
    3. 计算属性的求职结果会被保存起来 方便下次直接使用 如果计算属性方法中所依赖的任何数据都没有发生变化 则不会重新对计算属性 求职 这个可以提高运行效率
    4. 计算属性中必须有return
    <body>
        <div id="app">
            <input type="text" v-model="firstname" >+
            <input type="text" v-model="lastname" >=
            <input type="text" v-model="fullname" >
            <p>{{fullname}}</p>
        </div>
    
        <script>
            var vm = new Vue({
                el: '#app',
                data: {
                    firstname: '',
                    lastname: ''
                },
                methods: {},
                computed: {
                    
                    fullname: function () {
                        console.log('计算fullname被调用次数')
                        return this.firstname + '-' + this.lastname
                    }
                }
            })
        </script>
    </body>

    二、三种方法之间的比较

    1. computed属性会被缓存 除非依赖的响应式属性变化才会重新被计算 主要当做属性来使用
    2. methods方法表示一个具体的操作 主要书写业务逻辑
    3. watch一个对象 键是需要观察的表达式 值是对应的回调函数 主要用来监听某些特定数据的变化 从而进行某些具体的业务逻辑操作 可以看做是computed和methods的结合体
  • 相关阅读:
    环境变量
    Python的简介和入门程序
    Mybatis的分页插件PageHelper的使用
    SQLyog 快捷键总结
    如何查看开发项目框架的版本信息
    Linux find命令示例 30
    转:数据库索引原理------MemCached
    array_merge 和 + 的区别
    [介绍]PHP设计模式:DAO(数据访问对象模式)
    PHP业务逻辑层和数据访问层设计
  • 原文地址:https://www.cnblogs.com/ella-li/p/14722611.html
Copyright © 2011-2022 走看看