zoukankan      html  css  js  c++  java
  • vue watch对象数据内数据的变化

    需求

    需要根据 数据的变化而执行某些操作,且该数据是 对象内部的数据。

    方法一

    直接用 watch 观察该对象数据,需要加上deep,否则观察不到对象内部数据变化。然后比较需要观察的内部数据的变化。

     export default {
          data(){
            return {  
              example:{
                inner0:1,
                innner1:2
              }
            }
          },
          watch:{ 
            example:{
             //注意:当观察的数据为对象或数组时,curVal和oldVal是相等的,因为这两个形参指向的是同一个数据对象
              handler(curVal,oldVal){
                conosle.log(curVal,oldVal)
                if(curVal.inner0 != oldVal.inner0){
                    doSomething();
                }
              },
              deep:true
            }
          },
          methods:{
            doSomething(){
              conosle.log("doSomething");
            }
          }
        }

    方法二(推荐)

    灵活利用vue的计算属性。

    export default {
          data(){
            return {  
              example:{
                inner0:1,
                innner1:2
              }
            }
          },
          computed:{
              example_inner0(){
                  return this.example.inner0;
              }
          },
          watch:{ 
          //直接观察计算属性
            example_inner0:function(curVal,oldVal){  
                doSomething();  
            }
          },
          methods:{
            doSomething(){
              conosle.log("doSomething");
            }
          }
        }
  • 相关阅读:
    IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
    jquery click嵌套 事件重复注册 多次执行的问题解决
    IIS MVC 发布错误 403.14Forbidden Web 服务器被配置为不列出此目录的内容
    利用contextmenu事件,自定义右键
    js里面是没有Trim()这个方法的可以用以下的形式来判断是否输入的值为空
    flash的TotalFrames显示undefined
    复习重载
    PHP访问父类中的方法
    复习继承已有的类
    PHP继承已有的类
  • 原文地址:https://www.cnblogs.com/A-yes/p/9894151.html
Copyright © 2011-2022 走看看