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