2

我是淘汰赛的新手。我正在尝试一个场景,但我无法让它发挥作用。请帮忙。我正在使用 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属性绑定到复选框。最初,该IsSelected属性将设置为 false。

<span id="Span1" data-bind="text:$root.FilteredCollectionCount"></span>

即使我选中复选框,我总是将 Span 值设为 0。但我可以看到属性IsSelected更改为 true。

4

1 回答 1

2

您需要将 IsSelected 变成一个 observable 以便计算的 observable 在 IsSelected 的值发生变化时能够得到通知

如果它已经是可观察的,那么您需要将代码更改为

return item.IsSelected() == true;
于 2012-11-19T13:54:42.020 回答