首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >forEach循环中的Angular JS Promise绑定

forEach循环中的Angular JS Promise绑定
EN

Stack Overflow用户
提问于 2014-10-08 17:26:00
回答 1查看 1.3K关注 0票数 0

我使用angular.forEach遍历一个数组,对于数组中的每个值,我使用GET/来检索它的名称(数组包含键),然后将该名称推入另一个数组中。这个新数组正在一个下拉框(ngOptions)中使用。

我遇到的问题是,下拉列表是在GET/ responses到达之前创建的,所以它只显示空白选项,然后当它们到达时,它会在每个下拉列表中显示所有选项。

我有以下代码:

代码语言:javascript
复制
angular.forEach($scope.pots, function(value, key)   {
    $scope.selections = [];
    angular.forEach(value, function(val, ky) {
        if (ky === "selections") {
            angular.forEach(val, function(v, k) {
                $http.get('/selections/' + v).then(function(response) {
                    var response = response.data;
                    $scope.selection = response[0];
                    $scope.selectionName = $scope.selection.name;
                    $scope.selections.push({name : $scope.selectionName});
                    value["selectionNames"] = $scope.selections;
                })

            })
        }
    })
value["selectionNames"] = $scope.selections;
console.log(value);

因此,我迭代了一个包含选择列表的pots列表,使用GET/根据选择列表获取名称列表,最后将其推入到pots的作用域中。我正在重新设置选择后,每一个锅。

导致这个问题的原因是所有的响应都是同时到来的,它们绕过了$scope.selections = [];代码,所以它只是将来自所有三个pot的完整数组推送到每个pot中。

有什么建议吗?谢谢。

EN

Stack Overflow用户

发布于 2014-10-08 17:48:16

所以看起来我已经解决了..。有人能确认一下这是一个很好的实践吗?基本上,每次基于pot (值)中的selectionNames值进行迭代时,我都会重新创建$scope.selections

代码语言:javascript
复制
angular.forEach($scope.pots, function(value, key)   {
    $scope.selections = [];
    angular.forEach(value, function(val, ky) {
        if (ky === "selections") {
            angular.forEach(val, function(v, k) {
                $http.get('/selections/' + v).then(function(response) {
                    $scope.selections = [];
                    var response = response.data;
                    $scope.selection = response[0];
                    $scope.selectionName = $scope.selection.name;
                    var currentSelections = value.selectionNames;
                    angular.forEach(currentSelections, function(csV, csK) {
                        $scope.selections.push(csv);
                    })
                    $scope.selections.push({name : $scope.selectionName});
                    value["selectionNames"] = $scope.selections;
                })

            })
        }
    })
value["selectionNames"] = $scope.selections;
console.log(value);
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26253471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档