我有一个非常简单的测试:
jsfiddle示例
在那里,我已经用ojbect文本模式声明了我的视图模型。
然后单击复选框,我想更改observalearray元素的值。
当我尝试这样做时:
ko.utils.arrayForEach(viewModel.people(), function(person) {
console.log("was: " + person.name);
person.name ("Alex");
console.log("changedto: " + person.name);
});
(注意person.name("alex"),我有js错误:"未捕获的类型错误:对象#的属性'name'不是函数"。当我将行更改为'person.name="alex"'时,我没有错误,但我的UI不会更改!
请帮助我为可观察数组元素分配一个值,以便在UI中反映更改。
谢谢!
问题是数组中对象的属性是不可观察的,因此它们不是函数,UI也不会随着它们的更改而更新。
如果您将其更改为:
people : ko.observableArray([
{ name: ko.observable('Bert') },
{ name: ko.observable('Charles') },
{ name: ko.observable('Denise') }
])
然后,它们将是可观察的,并且UI将在它们更改时更新。