什么是`静态注入......`

时间:2015-08-06 19:56:27

标签: aurelia

我在Aurelia Dialog

中找到了这行代码
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在做什么?我知道它是将对话框服务注入构造函数。但为什么这样做而不是通常的注射呢?

1 个答案:

答案 0 :(得分:6)

正如你提到的博客文章,static inject是进行依赖注入的原始方式。一旦Babel开始支持装饰器,我们就实现了inject装饰器,使Aurelia代码看起来更好一些。在幕后,它只是在运行时将inject属性添加到类中(https://github.com/aurelia/dependency-injection/blob/master/src/decorators.js#L13)。