我有一个带有从服务器更新的observableArray的viewModel,那么我需要能够为该observableArray的过滤器定义一个动态的div数量。

这是一个scrum board示例,因此,想象一下您从服务器收到了一系列故事。并将其添加到viewModel.stories()observableArray。

我想为可观察数组中每个故事的属性的各种不同值提供模板绑定过滤器。

因此给定

item.BoardState是“待办事项”或“进行中”

我想要一个可观察的依存关系,我可以将其参数化为仅显示“进行中”的故事

    self.filterInProgress = ko.dependentObservable(function (filterParameter) {
    return ko.utils.arrayFilter(self.stories(), function (item) {
        console.log("Current Filter = " + filterParameter + "--- Current BoardState = " + item.BoardState);
        return ((item.BoardState === filterParameter));
    });
});


不幸的是,它说不起作用。任何建议,不胜感激。

最佳答案

您始终可以将过滤器移至单独的函数,并为每个filterType创建dependentObservable:

function filterStories(stories, filterParameter) {
    return ko.utils.arrayFilter(stories, function (item) {
        console.log("Current Filter = " + filterParameter + "--- Current BoardState = " + item.BoardState);
        return ((item.BoardState === filterParameter));
    });
}

self.filterInProgress = ko.dependentObservale(function() {
    return filterStories(self.stories(), "InProgress");
});

self.filterBacklog = ko.dependentObservale(function() {
    return filterStories(self.stories(), "Backlog");
});

关于javascript - knockout 参数化的可观数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9101954/

10-13 06:32