我有一个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(); }); });
然后,当然可以使用您认为合适的信息;例如,在指令,模板等中。您可以在菜单控制器等中重复此操作(根据您的需要进行定制)。当您更改服务的状态时,所有这些都将自动更新。
任何更具体的内容都取决于您的实现。
希望这可以帮助!