我试图更新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
是否有办法观察数组及其包含的值?
答案 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);