我正在尝试删除用户在循环中选择的值。
for (var i = 0; i < myArray.length; i++) {
MyService.myMapService.delete({id: myArray[i].myId }, myArray[i], function (response) {
if (response.isSuccessful) {
MyService.removeMyValue(myArray[i].myId);
}
})
}
但是,我不断收到以下错误
angular.js:13920 TypeError: Cannot read property 'myId' of undefined
请帮忙!
最佳答案
发生的事情是,您的 for 循环正在为所有 MyService.myMapService.delete
函数调用执行,而您的 i
正在变成 myArray.length
。当 myMapService.delete
异步调用完成后,它会尝试执行 myArray[i].myId
(其中 i 是数组长度,那么 myArray[i]
将是未定义的)。在这种情况下,您必须通过将其包装到自执行函数来保留值。
代码
for (var i = 0; i < myArray.length; i++) {
(function(j) {
MyService.myMapService.delete({
id: myArray[j].myId
}, myArray[j], function(response) {
if (response.isSuccessful) {
MyService.removeMyValue(myArray[j].myId);
}
})
})(i);
}
关于angularjs - 尝试使用 Sequelize 在循环中从数据库中删除多个值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40417698/