在工作中遇到了如题目描述的问题,也不报错,百思不得其解,经查找,特此记录
看个栗子
我想给doubanmovie加一个url属性,如下面的错误例子
this.doubanmovie.url="1111"//错误的例子
这是个错误的例子,不能直接修改data中变量的属性,这样写虽然url属性添加到了doubanmovie的变量,不会报错,但是页面不刷新,达不到想要的效果
要想解决这个问题,我们有以下几种做法
重新给数据赋值,doubanmovie重写
this.doubanmovie = {
...
url:""
}
//正确的示例,你需要把doubanmovie重新给赋值
使用$forceUpdate(),强制刷新数据
this.doubanmovie.url="1111"
this.$forceUpdate(); //正确的例子
Vue.set
定义:Vue 不允许在已经创建的实例上动态添加新的根级响应式属性 (root-level reactive property)。然而它可以使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上
语法:Vue.set( target, key, value )
参数说明: 参数说明:target:要更改的数据源,key:要更改或新增的数据,value:更改的值
Vue.set(this.doubanmovie,'url','111') //正确的例子