我在angularjs应用程序中有一个控制器,我在其中调用两种服务方法。
当控制器启动时,我的第二个方法使用在我的第一个方法中设置的$ scope值。 $ scope值未定义,因为我无法在此清楚地找出执行顺序。
为什么在第一个方法中设置$ scope值之前调用第二个方法?我怎样才能以正确的方式解决这个问题?
angular.module("Modal")
.controller("MyController",
function($scope, $log, ModalService, AuthService) {
//First method - Calls a WEB API
AuthService.FirstMethod(function (username) {
$scope.username = "myName"; //Is set after SecondMethod is called
$scope.items = "MyItems";
});
//Second method
//$scope values here are undefined when initiating the controller
ModalService.SecondMethod($scope.items, $scope.username, function (selectedItem) {
var test = selectedItem;
});
}
);
答案 0 :(得分:1)
您可以尝试以下方法:
function wrapUpFirst() {
return $q(function(resolve,reject) {
// Execute this function
AuthService.FirstMethod(function(result) {
resolve(result);
}, function(error) {
// Handle error
reject(error);
});
});
}
所以这会返回一个我们可以在下面使用的promise并将结果传递给第二个方法:
wrapUpFirst().then(function(success) {
// Use result for the second
ModalService.SecondMethod(success, otherParams, func(){});
});