2012-10-15 124 views
1

代码如下:EmployeeModel是viewModel,问题是当我更改某个项目的属性 - employees(obs数组)中的deletedFlag时,deletedItems未更新。KnockoutJs计算数组未正确计算

我该如何解决这个问题?

function Employee(data) { 
    this.employeid = ko.observable(data.employeid); 
    this.name = ko.observable(data.name); 
    this.isactive = ko.observable(data.isactive); 
    this.deletedFlag = ko.observable(false); 
} 

var EmployeeModel = function() { 
    var self = this; 
    self.employees = ko.observableArray([]); 

    self.deletedItems = ko.computed(function() { 
     return ko.utils.arrayFilter(self.employees(), function (item) { 
      return item.deletedFlag == true; 
     }); 
    }, this); 
} 

编辑:与下面的代码从阵列标志着一个项目为删除

self.removeEmployee = function (employee) { 
     employee.deletedFlag(true); 
    }; 
+0

希望u必须在年底加KO绑定'ko.applyBindings(新EmployeeModel());' – RohitWagh

+0

也张贴一些HTML到小提琴通过它 – RohitWagh

回答

1

属性deletedFlag是可观察到的,因此需要通过调用它作为一个功能来检索其当前值(你不能直接把它比作任何值):

self.deletedItems = ko.computed(function() { 
    return ko.utils.arrayFilter(self.employees(), function (item) { 
     return item.deletedFlag() == true; // <=== 
    }); 
}, this); 
+0

是的,你打了几分钟的解决方案:)非常感谢你! – yanislavgalyov