我有一个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
但是是一个淘汰对象。