如果我用一个注入语句注入模块,它就可以工作。 如果我用三个注入语句注入模块,那么应用程序就不会加载。
我希望两种方式都是等价的。
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) {
答案 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