在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去。

当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。

代码如下:

export default {
  name: 'formmanagement',
  data () {
    return {
        objData:{
        name:'花生',
        age:'100',
      },
    }

  },
  methods: {
  },

}

以上代码如果在页面渲染肯定显示没问题,能正常显示name:花生,age:100。

但是如果加上以下代码,3秒之后添加一个sex属性,虽然数据添加进去了,但此时页面是不会重新渲染的。

  mounted(){
        var _this. this;
        setTimeout(function(){
            _this.objData.sex = "男";
       }, 3000);

  },    

所以解决办法需要使用set方法设置data属性,正确写法如下:

  mounted(){
        var _this. this;
        setTimeout(function(){
            _this.objData.sex = "";
            _this.$set(_this.objData,_this.objData.sex,"男");
       }, 3000);

  },
12-20 09:59
查看更多