角度.js:如何更新数组的一个项目

Angular.js: how to update one item of an array?

本文关键字:数组 项目 一个 更新 js 何更新 角度      更新时间:2023-09-26

背景:内置于Angular(带路由),Node,Express,MongoDB/Mongoose的应用程序。

在一个控制器中,我有一个东西数组$scope.array=[];其项目是通过$http请求获取的。

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

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

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

任何人都可以建议一种仅更新/替换已修改项目的方法吗?

你可以做这样简单的事情。你可能已经知道这一点。

$scope.array.splice(this.$index,1, updateItem);

如果您已经在使用 Id 检查循环数组,这将替换/更新数组$index位置的项目。

您可以使用如下策略;

var modified_item_index = arrayIndexOfModifiedItem;
$http.get('').onSuccess(function(result){
    $scope.dataArray[modified_item_index] = result;
});

本质上是使用闭包范围的变量来存储修改项的数组索引。

如果你在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; } }

请参阅如何修复 JavaScript for Internet Explorer 浏览器中的 Array indexOf() 以获取更多信息。