javascript - knockout : Update item in an observableArray

标签 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 中应用的更改未反射(reflect)在 DOM 中。有什么建议吗?并且,有没有一种方法可以使用 knockout 来观察数组及其包含的值?

DEMO

最佳答案

将项目的输入属性也设置为可观察的:{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/

关于javascript - knockout : Update item in an observableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261188/

相关文章:

javascript - 在另一个窗口中监听事件

javascript - 不规则可点击形状的图案

javascript - 如何将编程标记添加到我的 Angular 页面中?

javascript - 如何在 THREE.JS 中将对象移动到其他对象位置?

javascript - 使用 foreach 内部的键值对进行 knockout 绑定(bind)

javascript - Wordpress jQuery 脚本未在使用 jQuery.noConflict 的一个实例上启动

jquery - KnockoutJS 自定义绑定(bind)以从多选中获取逗号分隔值

knockout.js - knockout "if"绑定(bind)不适用于可排序列表中的表达式?

knockout.js - cleanNode() 可以用来清理绑定(bind)吗?

c# - JSON 作为 null 传递给方法参数