我有一个AuthService,它登录一个用户,它返回一个用户json对象。我想做的是设置该对象,并且所有更改反映在应用程序(登录/注销状态),而不必刷新页面。
我将如何使用AngularJS实现这一目标?
最简单的方法是使用服务。例如:
app.factory( 'AuthService',function() { var currentUser; return { login: function() { ... },logout: function() { ... },isLoggedIn: function() { ... },currentUser: function() { return currentUser; } ... }; });
然后,您可以在任何控制器中引用此。以下代码监视来自服务的值的更改(通过调用指定的函数),然后将更改的值同步到作用域。
app.controller( 'MainCtrl',function( $scope,AuthService ) { $scope.$watch( AuthService.isLoggedIn,function ( isLoggedIn ) { $scope.isLoggedIn = isLoggedIn; $scope.currentUser = AuthService.currentUser(); }); });
然后,当然,你可以使用这些信息,但你认为合适;例如在指令中,在模板等。您可以重复此(定制您需要做什么)在菜单控制器等。当您更改服务状态时,所有将自动更新。
任何更具体的取决于你的实现。
希望这可以帮助!