vue的几个笔记

作者: 果汁凉茶丶 | 来源:发表于2019-01-03 11:49 被阅读2次

1. Vue.$set

  Vue利用数据劫持实现了双向数据绑定,只要数据被修改就会反应到视图层,但看看以下示例:

// 省略无关部分代码
data () {
  return {
    user: {
      name: 'zfs',
      age: 25
    }
  }
},
methods: {
  update () {
    this.user = { name: 'borui' }  // 视图层得到更新
    this.user.height = 178  // 属性得到新增,但视图层没有更新
  }
}

  为什么会出现以上问题?因为受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为 getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的。

  要处理这种情况,我们可以使用$set()方法,既可以新增属性,又可以触发视图更新。

  值得注意的是,$set写法与普通的对象属性写法不太一致,常见错误写法 this.$set(key,value)

mounted () {
    this.$set(this.user.height, 178)
}

  正确写法应该是:** this.$set(this.data,”key”,value’)**

mounted () {
    this.$set(this.student, "height",  178)
}

相关文章

网友评论

    本文标题:vue的几个笔记

    本文链接:https://www.haomeiwen.com/subject/wukfrqtx.html