【问题标题】:Knockout: Update item in an observableArray淘汰赛:更新 observableArray 中的项目
【发布时间】:2015-03-26 00:34:30
【问题描述】:

我正在尝试更新 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

【问题讨论】:

    标签: javascript knockout.js


    【解决方案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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2014-04-16
      相关资源
      最近更新 更多