static inject = [DialogService];
这是完整的课程:
import {Prompt} from './prompt';
import {DialogService} from '../dialog-service';
export class CommonDialogs {
static inject = [DialogService];
constructor(dialogService){
this.dialogService = dialogService;
}
prompt(question){
return this.dialogService.open({viewModel:Prompt, model:question});
};
}
static inject
在做什么?我知道它是将对话框服务注入构造函数。但为什么这样做而不是通常的注射呢?
答案 0 :(得分:6)
正如你提到的博客文章,static inject
是进行依赖注入的原始方式。一旦Babel开始支持装饰器,我们就实现了inject
装饰器,使Aurelia代码看起来更好一些。在幕后,它只是在运行时将inject
属性添加到类中(https://github.com/aurelia/dependency-injection/blob/master/src/decorators.js#L13)。