Angular.js:如何更新数组的一个项目?

时间:2014-12-11 21:50:38

标签: javascript arrays angularjs node.js

背景:以Angular(带路由),Node,Express,MongoDB / Mongoose构建的应用程序。

在一个控制器中,我有一系列内容$scope.array=[];,其项目是通过$http请求获取的。

我有一个修改数组中一项的例程:

$http.get('/api/update?id='+itemId, ..

get请求成功后,我必须更新已修改的$scope.array的特定项目。我知道一种可能的方法是重新获取完整的数组,但似乎效率低下。

有人可以建议更新/替换已修改项目的方法吗?

3 个答案:

答案 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