我正在尝试更新 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
中应用的更改未反射(reflect)在 DOM 中。有什么建议吗?并且,有没有一种方法可以使用 knockout
来观察数组及其包含的值?
最佳答案
将项目的输入属性也设置为可观察的:{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);
关于javascript - knockout : Update item in an observableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261188/