gpt4 book ai didi

javascript - ember js - 从计算属性返回的值看起来已缓存

转载 作者:行者123 更新时间:2023-12-03 06:39:53 24 4
gpt4 key购买 nike

我在从计算属性返回数组时遇到了这个奇怪的问题。我确切地了解了问题(如下),但不确定解决方案。创建了一个用于演示目的的旋转来解释。

案例1:https://ember-twiddle.com/9910dfea25b6fc4791e3920acca2558d?openFiles=controllers.application.js%2C

步骤:

a) 选中第一个复选框,如果我们在控制台中看到“arr”的值,则“newprop”属性将被添加到“arr”中的每个对象

b) 取消选中相同的复选框,查看控制台,返回相同的“arr”,而“newprop”仍然存在。但我假设它不会在那里,因为在 if 条件下有一个检查。

因此,经过一番故障排除后,我想出了下一个相同的方法。

案例2:https://ember-twiddle.com/735750b0a41c4bf87841bc79c6163259?openFiles=controllers.application.js%2C

执行相同的步骤,我们看到这次未选中复选框时“arr”没有“newprop”

twiddle 之间的唯一区别是,第一个数组中的数组(具有数据/模型)是在“getData”本身中定义的,而第二个数组中的数组是从另一个计算属性“what”中获取的.

我正在寻找:我需要让情况 1 旋转工作,但是当取消选中该复选框时,“arr”应该返回实际的原始“arr”,而不包含“newprop”。另外,需要了解为什么会发生这种情况。唯一改变的是直接在 fn 内部或通过另一个计算属性获取数据。

最佳答案

这是计算属性的主要目的。如果依赖键发生变化,它们也会发生变化。在情况 2 中,您总是要重新定义数组。在情况 1 中,您每次调用都访问同一个数组。

在情况 1 中,您可以在属性列表中添加依赖键。

what: function(){
var arr = [
{
a:"b",
c: [
{key:"1"},{key:"2"}
]
},
{
a:"f",
c: [
{key:"1"},{key:"1"}
]
}
];
return arr;
}.property('filterSet'), // see here

当属性 filterSet 更改时,这将重新生成您的数组。

编辑:

proof

关于javascript - ember js - 从计算属性返回的值看起来已缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com