AngularJS - Controller 之间共享状态?

标签 angularjs

我知道还有其他关于如何在 Angular Controller 之间传递数据的类似问题。

我想知道如何在 View 中处理这个问题..

假设我有一个用于登录、注册等的 UserController。 以及用于实际应用程序功能的 AppController。

UserController 相当简单,它与其他 Controller 是独立的。 但是如果应用程序需要了解用户 Controller 的信息怎么办?

假设应用程序 View 需要隐藏/显示内容,具体取决于用户是否登录。 或者,如果用户是男性或女性等,也可能是这样。

应用程序模型是否应该保留自己的用户模型状态副本? 例如appModel.isLoggedIn 、 appModel.gender 等?

感觉有点多余,但同时更易于测试。

那么正确的方法是什么?

最佳答案

简短回答

创建服务,请参阅 Creating Services了解详情。

长答案

服务本身是应用程序范围的单例,因此它们非常适合跨 View 、 Controller 等保持状态:

app.factory('myService', [ function () {
  'use strict';
  return {
    // Your service implementation goes here ...
  };
}]);

编写并注册服务后,您可以使用 AngularJS 的依赖注入(inject)功能在 Controller 中需要它:

app.controller('myController', [ 'myService', '$scope',
  function (myService, $scope) {
  'use strict';
  // Your controller implementation goes here ...
}]);

现在,在您的 Controller 中,您有 myService 变量,其中包含服务的单个实例。在那里,您可以拥有一个属性 isLoggedIn 来表示您的用户是否已登录。

关于AngularJS - Controller 之间共享状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17470419/

相关文章:

javascript - 通过 AngularJS 加载时,动画 GIF 无法在 Firefox 中播放

javascript - 检查图像是否存在运行 CORS

javascript - 选择 Angular 选项后,如何使用相关字段自动填充字段?

javascript - 如何在angularjs中将多个参数传递给$interval

javascript - 如何使用 onDeviceReady 设置 AngularJS 应用程序并为 Cordova 初始化函数?

angularjs - Protractor 不从自动完成搜索地址中选择第一个元素

javascript - 字符串数据转换为数组问题

angularjs - 分段表单上传图片和 Json

c# - 为什么参数名称对 Web Api id 有效而 memberId(均为 int)不起作用

javascript - 从两个不同变量中的 Angular 日期范围 slider 返回日期输出