Vue —— 关于Vue的data更新,但是页面不同步的问题

379 阅读1分钟

在工作中遇到了如题目描述的问题,也不报错,百思不得其解,经查找,特此记录

看个栗子 我想给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') //正确的例子