在哪里保持“全球化”?视图和动作

Where to keep "global" view and actions in Angular?

本文关键字:全球化 视图 在哪里      更新时间:2023-09-26

我正在用AngularJS构建一个应用程序,它进展顺利,但我有一个问题,理解在哪里以及如何编码全局的东西,比如注销的过程?

我在右上角有一个链接,当点击时将删除用户cookie。可能有一种通用的方法来共享实际这样做的代码?你是否设置了一个继承动作的控制器层次结构?表演一些广播魔术?指令?

我需要一些帮助。

您可以这样定义服务:

app.service('Auth', function() {
  var auth = {};
  auth.loggedIn = false;
  auth.login = function() {
    auth.loggedIn = true;
  };
  auth.logout = function() {
    auth.loggedIn = false;
  };
  return auth;
});

上面的代码示例摘自我强烈推荐的题为消费服务的文章。通过阅读它,您将深入了解如何使用服务。

(更新)

我相信你有两种选择如何使用这项服务。你可以在应用程序的控制器中使用它(就像我们在本文中使用的那样),或者你可以创建一个可重用的指令。

JSFiddle演示了第一个选项,其中服务被注入到最顶层的控制器中,并通过最顶层的作用域公开。子作用域的原型继承自父作用域,所以你也可以在子作用域中访问服务。

昨天我看到一篇很棒的文章,概述了登录的东西和angular:

https://medium.com/opinionated-angularjs/7bbf0346acec

但简短的回答是,我同意,它应该在一个服务中-即单例。

使用服务。你可以创建一个$user或$auth服务来做实际的登录/注销、加载当前用户信息、权限检查等,其他服务应该使用这个服务来做与user/auth相关的事情。

这也适用于其他事情。例如,如果你必须共享数据或提供通用api供控制器/指令使用。