asp.net-mvc - knockout 数组过滤器和计算可观察值不起作用

标签 asp.net-mvc knockout.js asp.net-mvc-4

我是 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/

相关文章:

c# - 在 ASP.NET MVC 中创建具有多个下拉菜单和文本字段的大型表单

asp.net-mvc - Jquery 模板与 Razor 如何在文本/html 脚本中使用 Razor

knockout.js - knockout 数据绑定(bind)重置

jquery - 在计算函数中检索 View 模型值时出现问题

asp.net-mvc - 处理程序 "dotless"在其模块列表中有一个错误模块 "ManagedPipelineHandler"

c# - mongoDB 的问题。类型的属性 '_id' ... 不能使用元素名称 '_id'

c# - ASP.NET MVC Razor 语法

c# - 用于过滤实体集合列表并维护实体列表的 Linq 表达式

css - MVC5 bundle 不适用于某些资源

c# - 无法在 visual studio 2012 中打开 mvc4 项目?