vm.$watch

观察vue实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。

//写法一:
this.$watch('a.b.c', function (newVal, oldVal) {})//键路径
vm.$watch( function () { this.fullName=this.firstName+' '+this.lastName; } )//函数
//写法二: watch:{ a:function(val,oldVal){}, "a.b":{ handler:function(newVal,oldVal){}, deep:true//如果监听的是一个对象,对象内部值发生变化,需要设置deep=true; },    c:{    handler:function(newVal,oldVal){}, immediate:true//该回调将会在监听开始之后立即调用    } }

 

vm.$set

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新

语法:vm.$set( target,key,value )

对于对象,propterty必须在data对象上存在才能让Vue将它转换为响应式的

var vm = new Vue({
    data:{
        a:1
      }
})
vm.a = 1  // 响应式的
vm.b = 2  // 非响应式的
//Vue不允许添加根级别的响应式属性,但是可以使用
this.$set(this.someObject, "b", 2)||Vue.set(vm.someObject, "b" ,2)

对于数组,Vue不能检测以下数组的变动

var vm = new Vue({
  data: {
    items: ['a', 'b', 'c']
  }
})
vm.items[1] = 'x' // 不是响应性的
vm.items.length = 2 // 不是响应性的
this.Sset(this.items,1,"x");//处理方法

vm.$delete

删除对象的属性,如果对象是响应式的,确保删除能触发更新视图。这个方法主要用于避开vue不能检测到属性被删除的限制。

语法:vm.$delete(target,key)
var vm = new Vue({..})
vm.delete(this.info, "age")

相关文章:

  • 2021-06-27
  • 2022-12-23
  • 2022-01-02
  • 2022-02-18
  • 2022-12-23
  • 2021-12-12
  • 2021-09-06
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-14
  • 2021-09-03
  • 2021-09-09
  • 2022-12-23
  • 2021-07-15
相关资源
相似解决方案