zoukankan      html  css  js  c++  java
  • Vue使用watch监听数组或对象的总结

    一、监听数组

      1.watch能监听到数组的push的改变,例如

    data () {
        return {
            demo: [1,2]
        }
    },
     mounted (){
        window.myVue = this
     },
    watch: {
        demo(val){
            console.log(val)
        }
    },
    
    myVue.demo.push(3)  //[1,2,3]

      2.watch 不能检测以下变动的数组:

      • 当你利用索引直接设置一个项时,例如:myVue.demo[1] = 5
      • 当你修改数组的长度时,例如:myVue.demo.length = 2

      这时候你可以删除原有键,再 $set 一个新的,这样就可以触发watch

    myVue.$set(myVue.demo,0,8)  // [8,2,3]

      3.更复杂一点,你想对数组嵌套对象进行监听的时候,这时就需要深度监听

    data () {
        return {
            demo:[
                 {
                      name:'张三',
                      age:18
                 },
            { name:
    '李四', age:20 } ] } }, mounted (){   window.myVue = this }, watch: { demo: { handler (val) { console.log(val) }, // 这里是关键,代表递归监听 demo 的变化 deep: true } }, myVue.demo[0].age = 30 //[{name:'张三',age:30},{name:'李四',age:20}]

    二、监听对象

      1.可以类似上面数组的第3点

      2.可以直接监听对象中的值

    data () {
        return {
            demo:{
                  name: '张三',
                  child: {
                      name: '李四',
                      age: 20
                  }
            }
        }
    },
    mounted (){
      window.myVue = this
    },
    watch: {
        'demo.child': {
          handler: function (val) {
            console.log(val)
          },
          deep: true
        },
      // 或者
       'demo.name' (val) {
            console.log(val)
         }
    },
    
    myVue.demo.name = '王二'  //王二 
    myVue.demo.age = '80' //{name:'李四',age:80}
    
    

    有其他好的办法欢迎留言指正

  • 相关阅读:
    直播流RTMP 知识
    XSSearch 说明文档保存
    网海茫茫,有你最暖
    实践中 XunSearch(讯搜)更新索引方案对比
    实践中 XunSearch(讯搜)的使用教程步骤
    留的住的叫幸福,流逝的叫遗憾
    百度API ; 很多有用的接口及公用 数据
    ecshop 模板开发总结
    jquery库和cityselect插 件的省市 级联
    PHP Excel 下载数据,并分页下载
  • 原文地址:https://www.cnblogs.com/zhujunislucky/p/12503403.html
Copyright © 2011-2022 走看看