ViewModel声明为Object文字.如何为可观察数组元素赋值



我有一个非常简单的测试:

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将在它们更改时更新。

最新更新