Javascript 更改承诺回调中的vue数据
我正试图在promise回调中更改我的Vue数据, 由于某些原因,我看不到模板中的值更改 我看到了这个问题 我已经将Javascript 更改承诺回调中的vue数据,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我正试图在promise回调中更改我的Vue数据, 由于某些原因,我看不到模板中的值更改 我看到了这个问题 我已经将这个更改为正确的,但是我仍然看不到模板中的值发生了变化 这是我的模板: <template> {{ sites }} </template> 知道为什么我的数据不会改变吗?我认为这是一个被动的问题。请试一试 .then(converted => { const sites = JSON.parse(JSON.stringify(_this.s
这个
更改为正确的,但是我仍然看不到模板中的值发生了变化
这是我的模板:
<template>
{{ sites }}
</template>
知道为什么我的数据不会改变吗?我认为这是一个被动的问题。请试一试
.then(converted => {
const sites = JSON.parse(JSON.stringify(_this.sites))
sites[site.id] = converted
_this.sites = sites
}
更多说明:
为了更新页面,Vue进行了廉价的比较(据我所知,是参考比较)。若只更新对象的属性,它们仍然指向相同的引用->Vue将不更新页面。因此,我们需要对它们进行深度复制,以便进行比较转换的内容是什么?它是一个异步函数,可以将所有firestore DocumentReference转换为JSON:您确定convert没有拒绝承诺吗(是
控制台.log(转换)
在内部,然后回调实际输出您期望的内容)?是,它确实……工作得很好,你能再解释一下这个主题吗,或者请参考一些文档?看一下。还有文档说明,您可以使用Vue.$set
或Array.prototype.splice
来检测更改。
.then(converted => {
const sites = JSON.parse(JSON.stringify(_this.sites))
sites[site.id] = converted
_this.sites = sites
}