Knockout:更新observableArray中的项目

时间:2015-03-25 16:27:04

标签: javascript knockout.js

我试图更新observableArray中的对象,如下所示:

var vm = {
    tests: ko.observableArray([{input: 'bar'}])
};

vm.tests.push(ko.observable({input: 'foo'}));

ko.applyBindings(vm); 

setTimeout(function () {
    vm.tests()[1]().input = '123';
}, 500);

由于某种原因,setTimeout中应用的更改未反映在DOM中。有什么建议吗?并且,knockout是否有办法观察数组及其包含的值?

DEMO

1 个答案:

答案 0 :(得分:1)

使项目的输入属性也是可观察的:{input: ko.observable("foo")}然后使用setter vm.tests()[1]().input("123")更新它:

var vm = {
    tests: ko.observableArray([{input: 'bar'}])
};

vm.tests.push(ko.observable({input: ko.observable('foo')}));

ko.applyBindings(vm); 

setTimeout(function () {
    vm.tests()[1]().input('123');
}, 1000);

http://jsfiddle.net/9h21qbve/