如何获得observableArray中的总计数

时间:2013-06-23 09:44:03

标签: knockout-2.0

我有这个数据列表:

var data = [
{"AMSnack": true, "PMSnack": false},
{"AMSnack": true, "PMSnack": false},
{"AMSnack": true, "PMSnack": false},
{"AMSnack": fale, "PMSnack": true},
{"AMSnack": true, "PMSnack": false}];

我希望AMSnack的总数为真,而PMSnack也是如此。 我怎样才能获得observableArray中的总数?

这是完整的代码http://jsfiddle.net/comfreakph/gtPGz/5/

1 个答案:

答案 0 :(得分:2)

您需要将GetCount定义为ko.computed(请参阅doc),您可以使用ko.utils.arrayFilter(请参阅doc)功能过滤您的数组。

要获得计数,您只需要返回已过滤数组的length

self.GetCount = ko.computed(function(){
    return ko.utils.arrayFilter(self.Data(), function(item) {
        //return item.AMSnack || item.PMSnack; // AMSnack or PMSnack true
         return item.AMSnack && item.PMSnack; // AMSnack and PMSnack true
        }).length;
});

演示JSFiddle.