角度.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, 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() 以获取更多信息。
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 按不同项目对对象数组进行排序
- 使用JavaScript或jQuery检查单选按钮选择是否与数组中的项目匹配
- JS:从整个数组中每次得到5个项目,并得到平均值
- 使用圆中的数组更改背景颜色项目
- 编辑CSV数组中的项目-快速CSV node.js
- 我可以限制我添加到数组中的项目数量吗
- 使用javascript/jquery从现有数组中创建一个新数组,该数组保存项目存在的次数
- 什么's JavaScript数组中项目的作用域
- 将项目放入数组中
- 使用 id 和 Javascript 从数组中删除项目
- (角度.js)如何通过过滤器计算数组中有多少项目
- 如何通过迭代对象数组来删除某些项目
- Lodash 从与值数组不匹配的数组中获取项目
- 发布要形成的 n 个项目的数组
- 查找数组中项目包含子字符串的索引
- 我怎么能只保留符合特定条件的数组项目
- 关于将数组项目处理为分区的问题
- Php回显数组项目逐个点击(唯一)
- 连续删除数组项目(游戏障碍)