我知道还有其他关于如何在 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/