Knockout.JS计算了可观察的实时搜索

时间:2014-02-12 20:59:55

标签: search knockout.js

我正在为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;
    });
});

1 个答案:

答案 0 :(得分:3)

你有一个典型的淘汰赛错误:因为self.pageLinksself.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中阅读有关可观察量和计算值的更多信息。