Angularjs then function from promise in for loop.如何访问当前项目的索引?
Angularjs then function from promise in for loop. How to access index of current item?
我有一个循环遍历 AngularJS 中对象的所有属性,并且对于每个 属性 它使用 Restangular 进行 AJAX 调用。
请求完成后,我想将该项目的 isNew 属性 设置为 false。
目前正在运行的当前实现看起来像这样(不重要的部分已删除):
var promises = [];
for (var prop in items) {
if (items.hasOwnProperty(prop)) {
var newPromise = REST.Items
.all('items')
.post({ key: items[prop].key, value: items[prop].value })
.then(function (prop) {
items[prop].isNew = false;
}.bind(this, prop));
promises.push(newPromise);
}
}
return $q.all(promises);
这个实现似乎工作得很好,但 jshint 抱怨在循环内创建函数:“不要在循环内创建函数。}.bind(this, prop));”
重构这部分代码的最佳方法是什么?
请参阅下面代码段中的解决方案
var promises = [];
var handler = function (prop) {
items[prop].isNew = false;
};
for (var prop in items) {
if (items.hasOwnProperty(prop)) {
var newPromise = REST.Items
.all('items')
.post({ key: items[prop].key, value: items[prop].value })
.then(handler.bind(this, prop));
promises.push(newPromise);
}
}
return $q.all(promises);
我有一个循环遍历 AngularJS 中对象的所有属性,并且对于每个 属性 它使用 Restangular 进行 AJAX 调用。 请求完成后,我想将该项目的 isNew 属性 设置为 false。
目前正在运行的当前实现看起来像这样(不重要的部分已删除):
var promises = [];
for (var prop in items) {
if (items.hasOwnProperty(prop)) {
var newPromise = REST.Items
.all('items')
.post({ key: items[prop].key, value: items[prop].value })
.then(function (prop) {
items[prop].isNew = false;
}.bind(this, prop));
promises.push(newPromise);
}
}
return $q.all(promises);
这个实现似乎工作得很好,但 jshint 抱怨在循环内创建函数:“不要在循环内创建函数。}.bind(this, prop));”
重构这部分代码的最佳方法是什么?
请参阅下面代码段中的解决方案
var promises = [];
var handler = function (prop) {
items[prop].isNew = false;
};
for (var prop in items) {
if (items.hasOwnProperty(prop)) {
var newPromise = REST.Items
.all('items')
.post({ key: items[prop].key, value: items[prop].value })
.then(handler.bind(this, prop));
promises.push(newPromise);
}
}
return $q.all(promises);