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