【发布时间】:2013-11-06 23:08:14
【问题描述】:
我是 AngularJS 的新手,我有一个小问题,请注意,我仍处于 AngularJS 开发的最初几周,我还没有完全理解所有内容,所以请不要笑。
好的,我有一个身份验证模块,其中包含我称为authService 的服务。在authService 中,我设置了值this.isAuthenticated 以确定用户是否已登录,这是一个简单的示例(我已删除所有内容,因为它工作正常。
this.isAuthenticated = function () {
// i have removed a great deal of code to keep this simple but we use $http and a rest service...
// more code then ...
if (loggedInUser == null) {
return false;
} else {
return true;
}
};
在另一个名为 ideasCtrl 的控制器中,我想检查用户是否已登录,并且我希望观察状态是否发生变化,以便我可以采取相应的行动……这是我的一部分 @ 987654327@
// please note that authService is correctly injected / referenced
$scope.isAuthenticated = authService.isAuthenticated();
console.log($scope.isAuthenticated);
$scope.$watch('isAuthenticated', function() {
console.log('hey, isAuthenticated has changed!');
});
我以公共用户的身份查看我的应用程序,然后登录(登录表单只是应用程序顶部的一个视图,我使用 ng-view 导入)$scope.$watch('isAuthenticated'... 没有被触发,被解雇或任何东西。如何广播此内容或确保捕获更改事件。
如果无法提供答案,请随时向我点头以正确的方向进行调查(如主题或开发领域)。我意识到我的代码示例非常糟糕。
【问题讨论】:
-
与您的问题不完全相关:您提到您使用
ng-view导入登录表单。您的页面中只能有 1 个ng-view,这是您的应用程序的主体,您可以在其中加载在$routeProvider中注册的“路线”。顺便说一句,您可以查看this posting 以获取经过身份验证/公开的场景。
标签: angularjs