繁体   English   中英

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

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

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

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

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

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

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

谁能建议一种方法来仅更新/替换已修改的项目?

您可以执行以下简单操作。 您可能已经知道这一点。

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

如果您已经使用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; } }

有关更多信息,请参见如何在Internet Explorer浏览器的JavaScript中修复Array indexOf()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM