我有一个observablearray定义为:

model.permitList = ko.observableArray([]);


我正在用一系列对象初始化它。当我这样做时会有区别

  model.permitList (arrayOfObjects)




当我这样做

  for(var i=0; i<arrayOfObjects.length; i++ ){
    model.permitList().push(arrayOfObjects(i));
  }


我知道有区别,因为当我尝试使用以下方法在视图中显示表中的数据时

  <tbody data-bind="foreach: model.permitList">


只有第一种方法有效。

有人知道这两种方法之间的区别吗?非常感谢。

最佳答案

使用第二种方法时,将使用实际的Array而不是ObservableArray来获取值。

for(var i=0; i<arrayOfObjects.length; i++ ){
  model.permitList.push(arrayOfObjects(i));
}


这将改变可观察数组。

当您执行model.permitList()时,将返回带有每个值的本机Array对象。当您在其上调用.push时,它将修改该数组。 model.permitList但是是一个淘汰对象。

10-06 11:37