knockout.js Knockout observableArray未更新

iklwldmw  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(263)

我有一个observableArray,它不会在HTML中更新,即使我可以将它记录到控制台并看到它的变化。
下面的例子有一个人的列表(people)。我搜索这个列表,并尝试将结果添加到一个绑定到无序列表的新observableArray(searchResult)中。这个列表元素从未更新,尽管控制台显示找到了来自people的正确条目。为什么搜索结果没有显示在HTML中?
下面是我的代码(也可以在JSFiddle上找到):
第一个

bqf10yzr

bqf10yzr1#

中有一组不必要的括号

self.searchResult().push(self.people()[pKey]);

它应该

self.searchResult.push(self.people()[pKey]);

演示JSFiddle.
因为当你写self.searchResult()的时候,你是在访问可观察对象中的底层数组,当你压入这个数组的时候,KO不会得到关于这个变化的通知,所以你需要在observableArray本身上使用push方法。
顺便说一句,Knockout有一个很好的useful array helpers集,可以简化您的过滤逻辑。

相关问题