更新KnockoutJS关联observableArray值

时间:2013-04-03 18:49:39

标签: javascript knockout.js associative-array

这应该很简单。

我有一个带有名称和布尔值的关联可观察数组。

this.items = ko.observableArray([
    { name: "name1", boolVal: true },
    { name: "name2", boolVal: true },
]);

然后一个简单的函数来改变boolVal。

this.changeValue = function (item) {
    item.boolVal = false;
};

当我调用changeValue函数时,boolVal会改变(请参阅我的jsfiddle中的console.log(data)),但视图不会更新。屏幕上的值仍为“true”。我必须对KnockoutJS如何工作做出不正确的假设。

JS Fiddle Link

1 个答案:

答案 0 :(得分:4)

为了KO更新UI,您需要具有可观察的属性:

this.items = ko.observableArray([
    { name: "name1", boolVal: ko.observable(true) },
    { name: "name2", boolVal: ko.observable(true) },
]);

并设置为:

this.changeValue = function (item) {
    item.boolVal(false);
};

ko.observableArray仅跟踪项目添加和删除。因此,如果其中一个项目发生更改,它将不会通知UI。为此,您需要对项目ko.observable

演示JSFiddle.