我已经设置了一个身份验证服务,我将其注入到我的登录控制器中,然后将其命名为登录...例如
$ scope.login = function(){
var loginResult = authentication.login($scope.model.user, $scope.model.pass);
我需要知道登录成功与否的天气,因为我需要根据结果执行一些逻辑。我可以从身份验证服务登录返回一个bool,但问题是在我的登录中它调用了一个有承诺的休息服务。像这样
return {
authenticate: function (username, password) {
var enc = base64.encode(username + ':' + password);
AuthRestangular.setDefaultHeaders({'Authorization': 'Basic ' + enc });
AuthRestangular.one('login').get().then(function (data) {
isLoggedIn = true;
return true;
}, function () {
return false;
});
所以Rest服务需要几秒钟才能返回,它返回一个promise,即......然后是true或false。因此,在我有承诺之前,服务实际上会返回登录控制器。
所以我很困惑我应该在这里做什么,我可以让我的服务也回复承诺吗?另外,loginResult始终为false,因为它没有及时返回,因此我的bool的默认值为false。
任何想法
由于
答案 0 :(得分:2)
您不应该从服务返回true false而应该从服务返回一个promise并在控制器中使用该promise
--service
return {
authenticate: function (username, password) {
var enc = base64.encode(username + ':' + password);
AuthRestangular.setDefaultHeaders({'Authorization': 'Basic ' + enc });
return AuthRestangular.one('login').get();
});
--controller
authentication.login($scope.model.user, $scope.model.pass).then(function(data){})