我有一个非常简单的测试:
我已经在ojbect文字模式中声明了我的viewmodel。
然后在复选框上单击,我想更改observablearray元素的值。
当我尝试这个时:
ko.utils.arrayForEach(viewModel.people(), function(person) {
console.log("was: " + person.name);
person.name ("Alex");
console.log("changedto: " + person.name);
});
(注意person.name(“alex”),我有js错误:'未捕获TypeError:对象#的属性'名称'不是函数'。当我将行更改为'person.name =“alex”时'我没有错,但我的用户界面没有改变!
请帮助我将属性赋值给可观察数组元素,因此更改会反映在UI中。
谢谢!
答案 0 :(得分:0)
问题是数组中对象的属性不是可观察的,因此它们不是函数,UI不会随着它们的更改而更新。
如果您将其更改为:
people : ko.observableArray([
{ name: ko.observable('Bert') },
{ name: ko.observable('Charles') },
{ name: ko.observable('Denise') }
])
然后它们将是可观察的,并且UI将在更改时更新。