cle*_*son 3 javascript dependency-injection aurelia
我正在尝试将一个类注入我的Aurelia应用程序中的其他位置,以便在登录后共享身份验证状态.我正在关注这个例子http://hobbit-on-aurelia.net/appstate/但看起来在转换期间范围丢失或者它们是独立实例.Aurelia的文档说:
默认情况下,DI容器假定所有内容都是单例实例;
当我this.userSession.router = router
从app实例设置路由器时,userSession实例不会更新.this.loggedUser
从外面总是不明确的.
这是我的傻瓜:http://plnkr.co/edit/qXtSGx
如果您假设用户会话是单例,则问题就在于此.在您的示例中,用户会话是视图模板,它不是单例.无论何时导航到视图,都会创建这些(在当前实现中,这可能会随着缓存而改变).从视图导航时,它们也会被破坏.
你想要的是一个独立的类,你注入到视图模型的构造函数中.
export class MyViewModel {
static inject = [UserSession];
constructor(userSession) {
this.userSession = userSession;
}
}
Run Code Online (Sandbox Code Playgroud)
这将创建服务类UserSession的单例实例,即默认行为.然后,容器将在创建视图时将其注入视图模型.
归档时间: |
|
查看次数: |
1258 次 |
最近记录: |