【发布时间】:2015-09-04 01:01:08
【问题描述】:
我正在 Angular-Meteor 中创建一个应用程序,我想在我的服务中创建一些可以在我的控制器中使用的函数。然而,这些函数使用 $meteor.subscribe 函数,它查询数据库并返回一个回调。在我的控制器中,我想调用该函数并将其绑定到 $scope,但随后它返回未定义,因为回调尚未返回任何内容。是否有将代码保留在服务中的解决方案?有什么建议吗?
一个例子:
服务
angular.module('GQ').service('AuthService', ['$meteor', function($meteor)
{
console.log('AuthService init')
this.getUserAuth = function() {
var user = {};
$meteor.subscribe('isAdmin').then(function(res){
//do database query...
//loop over returned values and do a check if query matches or not
// if it does match return true
// else return false
});
// then return the value
return user.isAdmin;
}
}]);
控制器
$scope.isAdmin = AuthService.getUserAuth();
console.log($scope.isAdmin) <--- undefined
【问题讨论】:
-
实际上这是由于 ajax 调用的
async行为而发生的。你应该试试$q服务。