在我们使用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); },