Javascript ko-Array:推送和直接分配之间的区别
我有一个可观察的Array定义为:Javascript ko-Array:推送和直接分配之间的区别,javascript,knockout.js,Javascript,Knockout.js,我有一个可观察的Array定义为: model.permitList = ko.observableArray([]); 我正在用一个对象数组初始化它。当我这样做的时候是有区别的 model.permitList (arrayOfObjects) for(var i=0; i<arrayOfObjects.length; i++ ){ model.permitList().push(arrayOfObjects(i)); } vs 当我这么做的时候 mode
model.permitList = ko.observableArray([]);
我正在用一个对象数组初始化它。当我这样做的时候是有区别的
model.permitList (arrayOfObjects)
for(var i=0; i<arrayOfObjects.length; i++ ){
model.permitList().push(arrayOfObjects(i));
}
vs
当我这么做的时候
model.permitList (arrayOfObjects)
for(var i=0; i<arrayOfObjects.length; i++ ){
model.permitList().push(arrayOfObjects(i));
}
for(var i=0;i使用第二种方法,您使用的是实际的数组
,而不是可观察数组
for(var i=0; i<arrayOfObjects.length; i++ ){
model.permitList.push(arrayOfObjects(i));
}
for(var i=0;i使用第二种方法,您使用的是实际的数组
,而不是可观察数组
for(var i=0; i<arrayOfObjects.length; i++ ){
model.permitList.push(arrayOfObjects(i));
}
for(var i=0;i当您编写model.permitList()时)
,这就像执行一个getter函数来获取值。在您的情况下,返回的值是一个本地数组,您可以在该数组上。推送您的值。这将导致一个本地数组,而不是observableArray。要使敲除视图绑定起作用并改变值以反映您需要一个observableArray
,这只能通过当您在编写model.permitList()时,像setter一样使用变量作为model.permitList(arrayofoobjects)
,这就像执行一个getter函数来获取值。在您的情况下,返回的值是一个本地数组,您可以在该数组上。推送您的值。这将导致一个本地数组,而不是observableArray。要使敲除视图绑定起作用并改变值以反映您需要一个observableArray
,这只能通过当您像setter一样使用变量作为model.permitList(arrayOfObjects)
谢谢,您的解释在很大程度上帮助我消除了混淆。谢谢,您的解释在很大程度上帮助我消除了混淆。