2014-11-10 4 views
0

У меня есть значение: $scope.loading, то есть true, когда мой контроллер загружен.Прослушать 2 или более значений в контроллере

Я хочу установить его в false, когда я получил все данные из нескольких источников.

app.controller('MyController', function ($scope, dataFactory) { 

$scope.loading = true; 
$scope.gotData1 = false; 
$scope.gotData2 = false; 
$scope.gotData3 = false; 



//Get Data 1 
    dataFactory.getData1().then(function (response) { 
     //... 
     $scope.gotData1 = true; 
    }, function (error) { 
     //... 
    }); 

//Get Data 2 
    dataFactory.getData2().then(function (response) { 
     //... 
     $scope.gotData2 = true; 
    }, function (error) { 
     //... 
    }); 

//Get Data 3 
    dataFactory.getData3().then(function (response) { 
     //... 
     $scope.gotData3 = true; 
    }, function (error) { 
     //... 
    }); 

}); 

ответ

6

Использование $q.all:

$scope.loading = true; 

//Get Data 1 
var promise1 = dataFactory.getData1(); 
promise1.then(function (response) { 
    //... 
    $scope.gotData1 = true; 
}, function (error) { 
    //... 
}); 

//Get Data 2 
var promise2 = dataFactory.getData2(); 
promise2.then(function (response) { 
    //... 
    $scope.gotData2 = true; 
}, function (error) { 
    //... 
}); 

//Get Data 3 
var promise3 = dataFactory.getData3(); 
promise3.then(function (response) { 
    //... 
    $scope.gotData3 = true; 
}, function (error) { 
    //... 
}); 

$q.all([promise1, promise2, promise3]).then(function(){ 
    $scope.loading = false; 
}); 
+0

Отлично! Благодаря! – peta

Смежные вопросы