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>

チェックボックスを選択しても、常にスパン値が 0 になります。しかし、PropertyIsSelectedが true に変更されていることがわかりました。

4

1 に答える 1

2

計算されたオブザーバブルがIsSelectedの値が変更されたときに通知できるようにするには、IsSelectedをオブザーバブルにする必要があります。

すでに観測可能である場合は、コードを次のように変更する必要があります

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