如何在不使用ES6类功能的情况下在Aurelia中注入依赖项

时间:2016-08-24 11:53:22

标签: javascript dependency-injection functional-programming ecmascript-6 aurelia

如何在导出函数而不是类时注入依赖项?

1 个答案:

答案 0 :(得分:5)

添加一个inject属性,列出您的依赖项到构造函数:

import {EventAggregator} from 'aurelia-event-aggregator';

export function Example(eventAggregator) {
  console.log(eventAggregator);
  return {
    message: 'hello world'
  };
}

Example.inject = [EventAggregator];

正在运行示例:https://gist.run/?id=d60c5c7dfbf53e507aae47d6c05b7d36

如果您想手动使用inject装饰器而不是添加静态inject属性,您可以写:

import {EventAggregator} from 'aurelia-event-aggregator';
import {inject} from 'aurelia-dependency-injection';

export function Example(eventAggregator) {
  console.log(eventAggregator);
  return {
    message: 'hello world'
  };
}

inject(EventAggregator)(Example);
  

注意:标准装饰" @"语法需要使用ES6类,因此您可能希望进行现代化。