AngularJS承诺和局部变量
AngularJS promise and Local variables
我正在向现有系统添加一个组件。大多数情况下,此组件将处理一个项目,但请求支持多个项目。例如,可视化图形中的某些项目,如果选择了多个项目,则所有项目都将包含在同一个图形中。
他们有一个服务来获取特定项目,或所有项目,但不是选择性项目。
我有这样的东西
for (var i = 0; i < $scope.items.length; i++) {
var item = $scope.items[i];
if (item.isSelected) {
$scope.selectedItems[item.name] = {
/* certain initial properties are set here */
nesteItems: []
};
thierService.getItem(item.id)
.then(function(data) {
// here I want to have access to item.name to reset the properties with correct values,
// for example:
$scope.selectedItems[item.name].nesteItems = data.nestedItems;
})
}
}
有没有办法使用承诺来做到这一点? 还是必须通过关闭来解决它?
我认为将所有
选定项目的调用加入thierService.getItem
一个承诺并处理结果很方便。
var selectedItemsNames = [], promises = [];
for(var i = 0; i < $scope.items.length; i++) {
var item = $scope.items[i];
if(item.isSelected) {
selectedItemsNames.push(item.name);
promises.push(thierService.getItem(item.id));
}
}
$q.all(promises).then(function(data) {
for(i = 0; i < data.length; i++) {
$scope.selectedItems[selectedItemsNames[i]] = { nesteItems: data[i].nestedItems };
};
});
相关文章:
- Javascript用函数return替换局部变量
- 每次调用函数时,都要修改Javascript中的局部变量
- 局部变量在闭包中丢失
- 试图将一个局部变量传递给我的ngAside控制器
- jQuery.ajax()访问javascript循环中的beforeEnd局部变量
- 如何使用局部变量创建全局变量
- 如何在单击链接后将局部变量发送到部分呈现
- 定义 JavaScript 类的局部变量
- 创建所有原型函数均可访问的局部变量
- 局部变量的声明
- JavaScript:在调用之前将函数重新分配给局部变量,而不是直接调用并对'这'
- 为什么 Javascript 中的类变量在尝试多次调用它们或将它们分配给局部变量时会消失
- 函数中的局部变量
- 局部变量仍可通过函数访问
- JavaScript和局部变量是不好的做法
- 局部变量在应用 function.call() 后变为全局变量
- 如何创建一个只应用了一些过滤器的局部变量
- 使用链式 Q 承诺异步加载的局部变量
- AngularJS承诺和局部变量
- 在Javascript承诺中,如何在' then '中关闭父作用域的局部变量