Aurelia注入不一致?

时间:2016-10-23 15:14:46

标签: aurelia

如果我用一个注入语句注入模块,它就可以工作。 如果我用三个注入语句注入模块,那么应用程序就不会加载。

我希望两种方式都是等价的。

    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) {

2 个答案:

答案 0 :(得分:2)

由于装饰器的实现方式,对inject装饰器的多次调用无效。 inject装饰器的作用是在类上创建静态inject()函数。所以对inject装饰器的多次调用只会继续覆盖静态注入属性。

答案 1 :(得分:1)

您可以使用static inject()进行多次注入:

export class SampleModel {

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

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

您可以在aurelia cheat shit中阅读有关依赖注入的更多信息:http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/cheat-sheet/3