如何使用 Aurelia 的 DI 容器注入工厂函数?

How do you inject a factory function with Aurelia's DI container?

我想在 window 可注入上创建一个第三方对象,这样我就可以测试独立于第三方服务的功能。我试图构建的组件是一个简单的包装器,围绕着 Disqus 嵌入式评论。我想使用的工厂很简单

() => window.DISQUS

有没有人能做到或知道是否可行?

使用 registerInstance 和这样的字符串键:

container.registerInstance('disqus', window.DISQUS);

然后您可以像这样将 disqus 实例注入到您的视图模型中:

import {inject} from 'aurelia-framework';

@inject('disqus')
export class Foo {
  constructor(disqus) {
    this.disqus = disqus;
  }
  ...
}