Aurelia 奥雷利亚动态构图

Aurelia 奥雷利亚动态构图,aurelia,composition,aurelia-templating,Aurelia,Composition,Aurelia Templating,我试图在aurelia中实现动态合成。更准确地说,我正在创建选项卡,并为每个新选项卡添加一个新div,在其中我使用compositionEngine.compose(…)添加与该选项卡对应的组件。可以在此处找到一个工作示例:。然而,我正在经历一些奇怪的行为。例如,如果我在两个选项卡中打开同一组件两次,它似乎会重用(共享)viewModel。只需打开模块2一次,单击更改以增加计数器,然后再次打开。它将显示以前的值。有什么想法吗?您可以使用瞬态装饰器标记视图模型 import {transient

我试图在aurelia中实现动态合成。更准确地说,我正在创建选项卡,并为每个新选项卡添加一个新div,在其中我使用compositionEngine.compose(…)添加与该选项卡对应的组件。可以在此处找到一个工作示例:。然而,我正在经历一些奇怪的行为。例如,如果我在两个选项卡中打开同一组件两次,它似乎会重用(共享)viewModel。只需打开模块2一次,单击更改以增加计数器,然后再次打开。它将显示以前的值。有什么想法吗?

您可以使用
瞬态
装饰器标记视图模型

 import {transient} from 'aurelia-framework'
 @transient()
 export class M2 {
     cnt = 1;

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

谢谢你,詹姆斯,你说得对,同时我也明白了问题的原因。compositionEngine调用container.get(…),默认情况下,container.get(…)会返回每个类的单例。如您所说添加@transient()会使容器返回一个新实例。我仍然不明白的是,aurelia是如何(在哪里)为其他情况创建模型实例的。我假设如果容器确实是一棵树,那么必须在子容器(在container.createChild()之后创建)中使用registerInstance注册模型