Knockout ObservableArray未在UI中更新

时间:2015-03-18 09:36:03

标签: javascript knockout.js

我正在尝试更新绑定到ObservaleArray的数组值。但是它没有得到更新。

function AppViewModel() {
    var self = this;
    self.Title=ko.observable('Sample');
    self.people = ko.observableArray([
         new Person('Ajay'),
         new Person('Kumar')
    ]);

    self.updateAns=function(){
     self.people()[0].Answered=false;
    };

    self.updateName=function(){
     self.people()[0].Name('John');
    };
    self.updateTitle=function(){
     self.Title('New Title');
    };

}

var Person=function(name){
  this.Name=name;
  this.Answer=[{Id: 1, Answered:true},{Id:2, Answered:true}]
}

ko.applyBindings(new AppViewModel());

Full Demo

如何保持数组值同步?

2 个答案:

答案 0 :(得分:1)

observable数组只会监听对数组本身的更改,如果你想让它们更新,你还需要Person上的成员是可观察的

答案 1 :(得分:1)

可观察数组跟踪collection of things的变化。这意味着它不会检测数组项的更改,而只会检测集合的更改,例如添加/删除/替换元素。为了使人name值保持同步,它应为observable

var Person = function(name){
  this.Name = ko.observable(name);
  ...
}

Updated demo