我认为在Aurelia中使用依赖注入时,默认会获得单例。自定义元素似乎不是这种情况。
假设我有3个名为a
,b
和c
的自定义元素。 a
和b
兄弟姐妹是同一页面。 c
是b
模板中的元素。我正在c
注入a
。
当我这样做时,我在c
中获得了a
的新实例。有没有办法让c
成为单身人士?
以下是一个掠夺者示例:http://plnkr.co/edit/Au80u0?p=preview
答案 0 :(得分:4)
自定义元素不能是单例,因为它们可以多次使用,在架构上,元素可以或将作为单例使用并不真正有意义。
想象一下,在页面上引用相同的元素3次,如果它们是单例并且不是预期的自定义元素行为,它们将具有相同的状态。但是,您可以创建一个注入的共享服务类(并且是一个单例)。
我在Aurelia项目中所做的是创建一个名为MyCustomElementMediator的类(用您的元素名称替换MyCustomElement)。这允许您处理组件的状态。这对于多次出现的自定义元素没有意义,但如果您只在一个地方使用它,那么这种方法可行。