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

Gre*_*Gum 4 aurelia

我在Aurelia Dialog中找到了这行代码

static inject = [DialogService];
Run Code Online (Sandbox Code Playgroud)

这是全班:

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}); 
     }; 
} 
Run Code Online (Sandbox Code Playgroud)

什么是static inject做什么?我知道它是将对话框服务注入构造函数.但为什么这样做而不是通常注入?

Ash*_*ant 6

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