我遇到了$resources
問題,我真的不知道什麼時候我可以簡單地指定一個變量爲$resource
響應var user = Users.getCurrent()
或者當我已經使用callBack。
我創建了一個service
它綁定到resource
。
.factory('Users', function ($resource, gcAPICOACH) {
return $resource(gcAPICOACH + 'users/current',{},
{
'getCurrent': {method: 'GET' },
'save': {method: 'PUT'}
});
});
我有我使用的授權
.factory('gcAuth', function ($rootScope, $log) {
var currentUser;
return {
login: function (user) {
currentUser = user;
$rootScope.$emit('notify', {type: 'info', title: gettext('Welcome'), text: user.name});
$rootScope.$broadcast('user.logged', user, $rootScope.next);
},
isLoggedIn: function() {
return !angular.isUndefined(currentUser);
},
currentUser: function() {
return currentUser;
}
};
});
現在我做了登錄功能簡單的登錄控制器的服務。 這裏是問題,我應該使用哪一個?
$scope.login = function() {
//option 1
Users.getCurrent(function (user) {
$log.debug("inside");
gcAuth.login(user);
});
//option 2
gcAuth.login(Users.getCurrent());
};
和HTML調用的函數:
<p><a class="btn btn-lg btn-success" ng-hide="user" ng-click="login()">Login!<span class="glyphicon glyphicon-ok"></span></a></p>
注:我已經設置該用戶令牌攔截器,所以當我打電話currentUser
它實際上返回正確的對象
文檔狀態:
認識到調用$ resource對象方法立即返回一個空引用(依賴於isArray的對象或數組)是很重要的。一旦從服務器返回數據,現有參考將填入實際數據。這是一個有用的技巧,因爲通常資源被分配給一個模型,然後由該模型渲染。
這很清楚,渲染沒有問題,但在這種情況下,角的「魔術」沒有效果。我對麼?
PS:我的另一個問題是Users.getCurrent()
返回的對象也有角函數,如$promise
和co。我怎樣才能找回乾淨的對象?