Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript KnockoutJs计算数组计算不正确_Javascript_Mvvm_Knockout.js - Fatal编程技术网

Javascript KnockoutJs计算数组计算不正确

Javascript KnockoutJs计算数组计算不正确,javascript,mvvm,knockout.js,Javascript,Mvvm,Knockout.js,代码如下:EmployeeModel是viewModel,问题是当我在employees(obs数组)中更改项的属性deletedFlag时,deletedItems不会更新 我怎样才能解决这个问题 function Employee(data) { this.employeid = ko.observable(data.employeid); this.name = ko.observable(data.name); this.isactive = ko.obser

代码如下:EmployeeModel是viewModel,问题是当我在employees(obs数组)中更改项的属性deletedFlag时,deletedItems不会更新

我怎样才能解决这个问题

  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);
    };

属性
deletedFlag
是可观察的,因此您需要通过将其作为函数调用来检索其当前值(您不能直接将其与任何值进行比较):

self.deletedItems=ko.computed(函数(){
return ko.utils.arrayFilter(self.employees(),函数(项){

return item.deletedFlag()==true;//希望您在最后应用了ko绑定
ko.applyBindings(new EmployeeModel());
还发布了一些HTML来处理它是的,您用几分钟时间就解决了我的问题:)非常感谢!
self.deletedItems = ko.computed(function () {
    return ko.utils.arrayFilter(self.employees(), function (item) {
        return item.deletedFlag() == true; // <===
    });
}, this);