2015-08-06 1 views
4

Я нашел эту строку кода в 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 делать? Я понимаю, что он вводит службу диалога в конструктор. Но почему это так, вместо обычного инъекции?

+0

Я нашел это от Роба, который немного объясняет: http://eisenbergeffect.bluespire.com/aurelia-update-with-decorators-ie9-and-more/ –

ответ

6

В качестве сообщения в блоге, которое вы связали с упоминаниями, static inject был оригинальным способом инъекции зависимости. Однажды Бабель начал поддерживать декораторов, мы внедрили декодер inject, чтобы сделать код Aurelia немного приятнее. Под обложками он просто добавляет свойство inject к классу во время выполнения (https://github.com/aurelia/dependency-injection/blob/master/src/decorators.js#L13).