变量在我的第二种方法中未定义
variables gets undefined in my second method
我的 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;
});
}
);
您可以尝试以下方法:
function wrapUpFirst() {
return $q(function(resolve,reject) {
// Execute this function
AuthService.FirstMethod(function(result) {
resolve(result);
}, function(error) {
// Handle error
reject(error);
});
});
}
所以这个 returns 我们可以在下面使用并将结果传递给第二种方法的承诺:
wrapUpFirst().then(function(success) {
// Use result for the second
ModalService.SecondMethod(success, otherParams, func(){});
});
我的 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;
});
}
);
您可以尝试以下方法:
function wrapUpFirst() {
return $q(function(resolve,reject) {
// Execute this function
AuthService.FirstMethod(function(result) {
resolve(result);
}, function(error) {
// Handle error
reject(error);
});
});
}
所以这个 returns 我们可以在下面使用并将结果传递给第二种方法的承诺:
wrapUpFirst().then(function(success) {
// Use result for the second
ModalService.SecondMethod(success, otherParams, func(){});
});