假设我有一个可观察的数组
[{type:'red' , value:1},
{type:'blue' , value:'2'},
{type:'red' , value:3},
{type:'red' , value:4}]
现在我需要一个可观察值,它返回类型 == red 的计数形式数组,并且每次可观察数组的对象发生任何变化时都会更新此计数。
假设我有一个可观察的数组
[{type:'red' , value:1},
{type:'blue' , value:'2'},
{type:'red' , value:3},
{type:'red' , value:4}]
现在我需要一个可观察值,它返回类型 == red 的计数形式数组,并且每次可观察数组的对象发生任何变化时都会更新此计数。
您可以使用它ko.computed
来执行此操作。
示例视图模型:
function ViewModel() {
var self = this;
self.arrayOfObjects= ko.observableArray( [{type:'red' , value:1},{type:'blue' , value:'2'},{type:'red' , value:3},{type:'red' , value:4}]);
self.count = ko.computed(function() {
var redItems = ko.utils.arrayFilter(self.arrayOfObjects(), function(arrayItem) {
return arrayItem.type == 'red';
});
return redItems.length;
});
}
任何绑定到计数的东西都会随着红色元素数量的变化而改变它的值:
<span data-bind="text: count"></span>
你需要一个计算的 obervable ,这样的东西会起作用(未经测试):
var yourArray = ko.observableArray([]);
var count = ko.computed(function() {
var items = ko.utils.arrayFilter(yourArray(), function(item) {
return item.type == "red";
});
return items.length;
});