Angular中的多个GET请求会干扰$ scope

时间:2015-04-28 17:37:45

标签: javascript angularjs

我正在构建一个MEAN应用程序。我遇到的问题是,在一个视图中,当我向控制器写入第二个$http.get时,我的$ scope被禁用。

以下是不工作的范围 error

使用此控制器(// GET Media部件禁用示波器并导致错误)

<script>
    var app = angular.module('myApp', []);

    app.controller('projectCtrl', function($scope, $http) {
        $scope.myVar = false;
        $scope.toggle = function() {
            $scope.myVar = !$scope.myVar
        };
        $http.get('/profile/project/').then(function (res){
            $scope.projects = res.data;
        });
        //GET Media
        $http.get('/uploads/media/'+projectId).then(function(data){
            console.log('Medien-Daten erhalten');
            $scope.media = data;
        });
    });
</script>   

来自德国的致敬,

大卫

2 个答案:

答案 0 :(得分:1)

感谢@Christopher Marshall,我忘了为projectId定义一个变量。 现在就这样工作:

$http.get('/profile/project/').then(function (res){
                $scope.projects = res.data;
                var projectId = $scope.projects._id;
            });
            //GET Media
            $http.get('/uploads/media/'+projectId).then(function(data){
                console.log('Medien-Daten erhalten');
                $scope.media = data;
            });
        });

答案 1 :(得分:1)

因此,如果您只获得项目ID,则应按照以下方式构建应用程序:

app.controller('projectCtrl', function($scope, $http) {
    $scope.myVar = false;
    $scope.toggle = function() {
        $scope.myVar = !$scope.myVar
    };
    $http
        .get('/profile/project/')
        .then(function (res){
            $scope.projects = res.data;
            var projectId = $scope.projects._id;
            return $http.get('/uploads/media/'+projectId);
        })
        .then(function(data){
          console.log('Medien-Daten erhalten');
            $scope.media = data;        
        });
});     

我已经改变了承诺,所以他们一个接一个地发生。