我实现了一个登录系统的角度资源这样
..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