2016-10-23 3 views
0

Wenn ich die Module mit einer inject-Anweisung injiziere, funktioniert es. Wenn ich die Module mit drei inject-Anweisungen injiziere, dann lädt die App nicht.Aurelia injizieren Inkonsistenz?

Ich würde erwarten, dass beide Wege gleich sind.

import {AuthService} from 'aurelia-auth'; 
    import {bindable, inject, Aurelia} from 'aurelia-framework'; 
    import {ValidationControllerFactory, ValidationController, ValidationRules} from 'aurelia-validation'; 
    import {BootstrapFormRenderer} from './bootstrap-form-renderer'; 

    //Works 
    //@inject(Aurelia, AuthService, ValidationControllerFactory) 

    //Does not work 
    @inject(Aurelia) 
    @inject(AuthService) 
    @inject(ValidationControllerFactory) 

    export class Login { 
     constructor(aurelia, authService, controllerFactory) { 

Antwort

2

Mehrere Aufrufe der inject Dekorateur gewonnen‘ t funktionieren aufgrund der Implementierung des Dekorators. Der inject decorator erstellt die statische inject() - Funktion für die Klasse. So werden mehrere Aufrufe an den inject decorator nur die statische inject-Eigenschaft überschreiben.

1

Sie können static inject() für mehrere einspritzt so verwenden:

export class SampleModel { 

    static inject() { return [DatabaseService, AuthService, EventAggregator]; } 

    constructor(db, auth, events){ 
     this.db = db; 
     this.auth = auth; 
     this.events = events; 
    } 
} 

Sie können weitere Informationen über Dependency Injection in aurelia lesen betrügen shit: http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/cheat-sheet/3

+0

Ok danke, also sind die vielen Injektionen im alten Stil. Gibt es einen Dokumentationslink, der besagt, dass ein einzelner inject der richtige Weg ist? – Spiff

+0

Haben Sie versucht, Autoinject? – Charleh

+0

Autoinject-Anweisung ist für Typoskript-Code. – JayDi