我實現了一個登錄系統的角度資源這樣
..factory.js
//Create a factory for the Login API
angular.module(...)
.factory('LoginEntity', ['$resource', function ($resource) {
return $resource(
'API/sigin',
{
save: {method: 'POST'},
update: {method: 'PUT'}
}
);
}])
... controller.js
.controller('xxxController', ['LoginEntity', function(LoginEntity, $rootScope){
//in Controller add LoginEntity dependency
$rootScope.loggedinuser = {};
LoginEntity.save({
username: user.userName,
password: user.password
},
function (response) {
//success callback
$rootScope.loggedinuser = response;
},
function() {
//error callback
});
}]);
... AppCtrl
.controller('AppCtrl',function($scope,$rootScope){
username = $rootScope.loggedinuser.username;
}
這就是我所擁有的,但rootcope似乎並沒有在App控制器中可訪問。
任何幫助,或協助將高度讚賞
看起來像在執行成功回調之前訪問'$ rootScope.loggedinuser'(假設錯誤回調產生了一些控制檯日誌,因此您知道執行成功了)。看看[Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) – Aprillion
就像@Aprillion所說的,你在訪問$ rootScope.loggedinuser之前成功回調被執行。您可以將API調用移至AppCtrl而不是xxxController,並在成功回調中執行邏輯。 –
感謝@ huan feng,我把它移到了App Ctrl上,它工作正常 – kplus