我有一个observablearray定义为:
model.permitList = ko.observableArray([]);
我用一组对象初始化它。我这样做有所不同
model.permitList (arrayOfObjects)
VS。
当我这样做时
for(var i=0; i<arrayOfObjects.length; i++ ){
model.permitList().push(arrayOfObjects(i));
}
我知道存在差异,因为当我尝试使用
在我的视图中的表格中显示数据时 <tbody data-bind="foreach: model.permitList">
只有第一种方法有效。
有人知道这两种方法的区别吗?非常感谢。
答案 0 :(得分:1)
使用第二种方法,您将获得具有实际Array
的值,而不是ObservableArray
。
for(var i=0; i<arrayOfObjects.length; i++ ){
model.permitList.push(arrayOfObjects(i));
}
这将改变可观察数组。
执行model.permitList()
时,会返回包含每个值的本地Array
对象。当你打电话给.push
时,它会修改那个数组。 model.permitList
然而是一个Knockout对象。
答案 1 :(得分:1)
当您编写model.permitList()
时,它就像执行getter函数来获取值一样。在您的情况下,返回的值是一个本机数组,您可以.push
使用您的值。这将导致本机数组而不是observableArray。对于挖掘视图绑定工作和值更改以反映您需要observableArray
,这只能在您将变量像setter一样使用model.permitList (arrayOfObjects)
时才能完成