我正在尝试在 aurelia 中实现动态组合。更准确地说,我正在创建选项卡,并为每个新选项卡添加一个新 div,并在其中使用 compositionEngine.compose(...) 添加与该选项卡对应的组件。可以在此处找到一个工作示例:https ://gist.run/?id=08a04dad8d94af01989d789a216195f3 。然而,我正在经历一些奇怪的行为。例如,如果我在 2 个选项卡中两次打开相同的组件,它似乎会重用(共享)viewModel。只需打开模块 2 一次,单击更改以增加计数器,然后再次打开它。它将显示以前的值。有任何想法吗?
问问题
403 次
2 回答
0
谢谢詹姆斯,你是对的,与此同时,我明白了我的问题的原因。compositionEngine 调用 container.get(...) ,它当然默认返回每个类的单例。如您所说添加 @transient() 会使容器返回一个新实例。我仍然不明白的是 aurelia 如何(在哪里)为其他情况创建模型实例。我假设容器确实是一棵树,模型必须在子容器中使用 registerInstance 注册(在 container.createChild() 之后创建)
于 2016-09-02T16:48:48.523 回答
0
transient
你可以用装饰器标记你的视图模型
import {transient} from 'aurelia-framework'
@transient()
export class M2 {
cnt = 1;
click(event){
this.cnt = this.cnt + 1;
}
}
于 2016-09-01T13:55:27.453 回答