Aurelia动态构图

时间:2016-08-31 19:35:04

标签: aurelia composition aurelia-templating

我正试图在aurelia中实现动态组合。更确切地说,我正在创建选项卡,对于每个新选项卡,我添加了一个新的div,我在内部使用compositionEngine.compose(...)来添加与该选项卡对应的组件。可以在此处找到一个工作示例:https://gist.run/?id=08a04dad8d94af01989d789a216195f3。我遇到了一些奇怪的行为。例如,如果我在2个选项卡中两次打开相同的组件,它似乎重用(共享)viewModel。只需打开模块2一次,单击更改以递增计数器,然后再次打开它。它将显示以前的值。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用transient装饰器

标记视图模型
 import {transient} from 'aurelia-framework'
 @transient()
 export class M2 {
     cnt = 1;

     click(event){
     this.cnt = this.cnt + 1;
   }
 }

答案 1 :(得分:0)

谢谢James,你是对的,同时我理解了我的问题的原因。 compositionEngine调用container.get(...),默认情况下返回每个类的单例。如上所述添加@transient()会使容器返回一个新实例。我还不明白的是aurelia如何(在哪里)为其他案例创建模型实例。我假设如果容器确实是一个树,模型必须使用子容器中的registerInstance注册(在container.createChild()之后创建)