首页 > 其他 > 详细

Vue之监听数据变化watch、computed、methods

时间:2021-04-30 20:43:15      阅读:27      评论:0      收藏:0      [点我收藏+]

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

技术分享图片

 方式一:使用事件绑定机制@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的结合体

Vue之监听数据变化watch、computed、methods

原文:https://www.cnblogs.com/ella-li/p/14722611.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!