背景:以Angular(带路由),Node,Express,MongoDB / Mongoose构建的应用程序。
在一个控制器中,我有一系列内容$scope.array=[];
,其项目是通过$http
请求获取的。
我有一个修改数组中一项的例程:
$http.get('/api/update?id='+itemId, ..
get
请求成功后,我必须更新已修改的$scope.array
的特定项目。我知道一种可能的方法是重新获取完整的数组,但似乎效率低下。
有人可以建议更新/替换已修改项目的方法吗?
答案 0 :(得分:3)
你可以做这样简单的事情。你可能已经知道了。
$ scope.array.splice(this。$ index,1,updatedItem);
如果已经使用Id检查在数组上循环,这将替换/更新$ index位置的数组中的项目。
答案 1 :(得分:0)
您可以使用下面的策略;
var modified_item_index = arrayIndexOfModifiedItem;
$http.get('').onSuccess(function(result){
$scope.dataArray[modified_item_index] = result;
});
基本上使用闭包范围变量来存储修改项的数组索引。
答案 2 :(得分:0)
如果您使用带有Web应用程序的库(例如,jQuery),那么您可以使用他们的IE7 / 8支持(例如,jQuery的$.inArray
)。如果没有,您可以为IE7 / 8包含一个简单的“polyfill”:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(obj, start) {
for (var i = (start || 0), j = this.length; i < j; i++) {
if (this[i] === obj) { return i; }
}
return -1;
}
}
有关详情,请参阅How to fix Array indexOf() in JavaScript for Internet Explorer browsers。