Vue.set()

作用:

  • 给对象添加响应式属性
  • 更新数组
var vm = new Vue({
  data: {
    a: 1,      // 因为vue实例化的时候,data里的数据才能getter/setter转换化
    arr: [1, 2, 3]
  }
})
// `vm.a` 现在是响应式的

vm.b = 2
// `vm.b` 不是响应式的

// vm.arr[1] = 'G'  // 不是响应式的

vue不允许动态的添加根级别的响应式属性,但是可以使用Vue.set(object, propertyName, value)方法向嵌套对象添加响应式属性

var vm = new Vue({
  data: {
    userProfile: {
      name: 'Anika'
    }
  }
})

Vue.set(vm.userProfile, 'age', 27)

// 或者
vm.$set(vm.userProfile, 'age', 27)
// 通过索引修改数组、修改数组长度,vue是不能检测到的,所以不能更新视图
// 其他修改数组的方式
1.set
Vue.set(vm.arr, 1, 'w')

2.splice
vm.arr.splice(1, 1, 'q')

3.
vm.arr[1] = 'G' 
vm.$forceUpdate()

4.???
vm.arr[1] = 'O' 
vm.arr = [...vm.arr[1]]

results matching ""

    No results matching ""