在哪里保持"全球" Angular的观点和行动?

时间:2014-03-16 09:44:20

标签: javascript angularjs

我正在使用AngularJS构建一个应用程序并且进展顺利,但我在理解在何处以及如何编写全局内容(例如注销过程)方面存在问题?

我的右上角有一个链接,用于在点击时删除用户Cookie。可能有一种共享实际代码的常用方法吗?您是否设置了继承操作的控制器层次结构?做一些广播魔术?指令?

我需要一些帮助来解决这个问题。

3 个答案:

答案 0 :(得分:1)

你可以定义服务 - 像这样:

app.service('Auth', function() {
  var auth = {};

  auth.loggedIn = false;

  auth.login = function() {
    auth.loggedIn = true;
  };

  auth.logout = function() {
    auth.loggedIn = false;
  };

  return auth;
});

以上代码示例摘自我强烈推荐的标题为Consuming services的文章。通过阅读,您将了解如何使用服务。

<强> [更新]

我相信您有两种选择如何使用此服务。你可以使用它的一个控制器(就像我们在提供的文章中使用的那样),或者你可以创建一个可重用的指令。

JSFiddle演示了第一个选项,其中服务注入最顶层控制器并暴露在最顶层范围内。子范围原型继承自父范围,因此您也可以在子范围内访问该服务。

答案 1 :(得分:0)

我昨天遇到一篇很棒的文章,概述了登录内容和角度:

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

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

答案 2 :(得分:0)

使用服务。您可以创建一个$ user或$ auth服务,它将执行实际的登录/注销和加载当前用户信息,权限检查等。控制器和其他服务应该使用此服务来执行用户/身份验证相关的事情。

这也适用于其他事情。就像你必须共享数据或提供用于控制器/指令的通用API一样。