【发布时间】:2018-04-11 17:23:07
【问题描述】:
我有一个简单地格式化日期的计算属性:
computed: {
items() {
return this.licenseItems.map(function(license) {
license.expires_at = moment(license.expires_at).format('MM/DD/YYYY');
return license;
});
}
}
我将licenseItems 传递给带有.sync 修饰符的表单组件,并从表单中发出update:field 事件。在 vue 开发工具中,我可以看到 licenseItems(数据)已正确更新,但 items(已计算)仍显示旧数据,因此未执行重新计算。
我注意到,如果我删除地图并从计算属性中返回 licenseItems 对象,它会被更新。使用同步修饰符时,Vue 在映射对象上的计算属性是否存在问题?
【问题讨论】:
-
这里没有足够的信息继续下去?你能展示它是如何在父模板中传递的以及它是如何在子模板中发出的吗?您是否正在向许可证中添加新属性?
-
你是传递数组还是数组的一个元素给组件?
-
好吧,两者都有,但我担心的是通过
:items.sync="licenseItems"。同步工作正常,只是计算的属性没有更新。 -
必须是我的组件特有的东西,我把 jsfiddle.net/kvej67xy/2 放在一起来测试这个功能,它似乎工作正常。