首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注射前后不一致?

注射前后不一致?
EN

Stack Overflow用户
提问于 2016-10-23 15:14:46
回答 2查看 103关注 0票数 0

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

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

代码语言:javascript
复制
    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) {
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-23 17:06:19

由于装饰器是如何实现的,对inject装饰器的多次调用将无法工作。注入修饰器所做的是在类上创建静态inject()函数。因此,对注入修饰器的多次调用只会继续覆盖静态inject属性。

票数 2
EN

Stack Overflow用户

发布于 2016-10-23 15:43:31

您可以将static inject()用于这样的多个注入:

代码语言:javascript
复制
export class SampleModel {

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40204495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档