我正在为knockout.js概念证明进行实时搜索功能。当我相信它应该时,ko.computed数组不会返回任何内容。任何帮助肯定是赞赏。这是一个jsfiddle:jsFiddle
self = this;
self.query = ko.observable('benefits');
self.samplesharepoint = [
{ title: "benefits", url: "www.benefits.com", sites: "branchburg, branford", topics: "benefits", tagged: "false" },
{ title: "health", url: "www.health.com", sites: "indy, laval", topics: "health", tagged: "false"},
{ title: "benefits", url: "www.benefits.com", sites: "ponce, genentech", topics: "benefits", tagged: "false"}
];
debugger;
self.pageLinks = ko.observableArray(self.samplesharepoint);
self.computedPageLinks = ko.computed(function() {
return ko.utils.arrayFilter(self.pageLinks, function(item) {
return item.title.toLowerCase().indexOf(self.query.toLowerCase()) >= 0;
});
});
答案 0 :(得分:3)
你有一个典型的淘汰赛错误:因为self.pageLinks
和self.query
是可观察的 - 这是函数 - 你需要在没有任何参数的情况下调用它们来获取它们的值。
所以将你的计算机改为:
self.computedPageLinks = ko.computed(function() {
return ko.utils.arrayFilter(self.pageLinks(), function(item) {
return item.title.toLowerCase().indexOf(self.query().toLowerCase()) >= 0;
});
});
请注意()
和self.pageLinks()
self.query()
演示JSFiddle。
您可以在documentation中阅读有关可观察量和计算值的更多信息。