我是 knockout 新手。我正在尝试一个场景,但无法使其发挥作用。请帮忙。我正在使用 MVC4。
function ViewModel(data) {
var self = this;
this.Collection = ko.observable(data);
self.GetFilteredCollection = ko.computed(function () {
var filteredCollection = ko.utils.arrayFilter(self.Collection(), function (item) {
return item.IsSelected == true;
});
return filteredCollection;
});
self.FilteredCollectionCount = ko.computed(function () {
return self.GetFilteredCollection().length;
});
});
var collectionList = eval('<%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model.Collection) %>');
var VM = new ViewModel(collectionList);
ko.applyBindings(VM);
我已将 IsSelected
属性绑定(bind)到复选框。最初,IsSelected
属性将设置为 false。
<span id="Span1" data-bind="text:$root.FilteredCollectionCount"></span>
即使我选择了该复选框,我的跨度值始终为 0。但我可以看到属性 IsSelected
更改为 true。
最佳答案
您需要将 IsSelected 设为可观察量,以便计算的可观察量能够在 IsSelected 的值发生更改时收到通知
如果它已经是可观察的,那么您需要将代码更改为
return item.IsSelected() == true;
关于asp.net-mvc - knockout 数组过滤器和计算可观察值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13454987/