我不太确定我做错了什么,但似乎我的profile
在我们到达MainCtrl
时并没有解决。然而,user
会解决。我可能没有在Auth
服务中正确提取个人资料信息吗?
路由器:
angular.module('app')
.config(function ($stateProvide) {
$stateProvider
.state('main', {
url: '/main',
templateUrl: 'app/main/main',
controller: 'MainCtrl',
resolve: {
user: function (Auth) {
return Auth.getUser();
},
profile: function (user) {
return Auth.getProfile();
}
}
});
});
控制器:
angular.module('app')
.controller('MainCtrl', function ($scope, user, profile) {
$scope.user = user;
$scope.profile = profile; <- DOESNT RESOLVE
});
验证服务:
angular.module('app')
.factory('Auth', function ($firebaseSimpleLogin, $firebase, FBURL) {
var ref = new Firebase(FBURL);
var auth = $firebaseSimpleLogin(ref);
var Auth = {
user: {},
getUser: function () {
return auth.$getCurrentUser();
},
getProfile: function(uid) {
return $firebase(ref.child('users').child(uid)).$asObject();
}
};
return Auth;
});
答案 0 :(得分:1)
像
这样的东西auth.$getCurrentUser()
返回一个承诺,所以你需要一个
.then(function(user) {
回调完成前的事件
在您的情况下,您可以解决then
,例如
Auth.getUser().then(function(user){ return user; });
同样$asObject()
需要$loaded()
才能承诺
var obj = $firebase(ref).$asObject();
obj.$loaded()
.then(function(data) {})
答案 1 :(得分:0)
尝试使用此结构作为您的承诺:
var fetchSomething = function (action, params) {
var promise = $http({
method: 'POST',
url: 'someurl to the firebase',
data: params,
headers: {
'Access-Control-Allow-Origin': true,
'Content-Type': 'application/json'
}
}).success(function (data, status, headers, config) {
return data;
});
return promise;
};