javascript - Aurelia 中的全局应用状态

标签 javascript dependency-injection aurelia

我正在尝试将一个类注入(inject)到我的 Aurelia 应用程序的其他位置,以便在登录后共享身份验证状态。我正在关注这个例子 http://hobbit-on-aurelia.net/appstate/但看起来范围在转换过程中丢失了,或者它们是独立的实例。 Aurelia 的文档说:

By default, the DI container assumes that everything is a singleton instance;

当我设置路由器从应用程序实例执行 this.userSession.router = router 时,userSession 实例未更新。 this.loggedUser 始终未从外部定义。

这是我的 plunker:http://plnkr.co/edit/qXtSGx

最佳答案

如果您假设用户 session 是单例,那就是问题所在。在您的示例中,用户 session 是一个 View 模板,它不是单例。每当您导航到 View 时,这些都会被创建(在当前的实现中,这可能会随着缓存的改变而改变)。每当您从 View 中导航时,它们也会被销毁。

您想要的是一个独立的类,您可以将其注入(inject)到 View 模型的构造函数中。

export class MyViewModel {
   static inject = [UserSession];
   constructor(userSession) {
       this.userSession = userSession;
   }
}

这将创建服务类 UserSession 的单例实例(默认行为)。然后,容器会在创建 View 时将其注入(inject) View 模型。

关于javascript - Aurelia 中的全局应用状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210597/

相关文章:

javascript - 使用 Simple HTML Dom Parser 抓取带有特定关键字的 <script> 标签

javascript - Node Socket.io 对象问题

javascript - 有没有办法获取函数表达式的构造函数名称?

javascript - 是否可以使用 Node-webkit 在 osx yosemite 10.10.3 上禁用最大化

c# - 通过上下文解决依赖关系 - 深入解析树

c# - IoC 和 "hiding implementation details"

c# - 构造函数 + 依赖注入(inject)

Aurelia CLI 包括 Bootstrap Glyphicons

javascript - Aurelia JS - Kendo UI 垂直 slider 的高度百分比?

使用 buffer.js 时出现 aurelia-cli 错误 - 全局未定义