#aurelia
#aurelia
Вопрос:
Если я внедряю модули с помощью одной инструкции inject, это работает. Если я введу модули с помощью трех инструкций inject, приложение не загрузится.
Я бы ожидал, что оба способа эквивалентны.
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) {
Ответ №1:
Множественные вызовы inject
декоратора не будут работать из-за того, как реализован декоратор. Что делает декоратор ввода, так это создает статическую функцию inject() в классе. Таким образом, множественные вызовы декоратора ввода будут просто перезаписывать свойство static inject.
Ответ №2:
Вы можете использовать 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
Комментарии:
1. Хорошо, спасибо, так что множественные вставки — это старый стиль. Есть ли ссылка на документацию, в которой указано, что необходимо выполнить однократное внедрение?
2. @user905374, ты можешь прочитать о внедрении в aurelia cheat shit: aurelia.io/hub.html#/doc/article/aurelia/framework/latest /…
3. Несколько
inject
декораторов — это не «старый стиль», они никогда не работали. Что делаетinject
декоратор, так это создаетstatic inject()
функцию в классе. Таким образом, множественные вызовыinject
декоратора будут просто перезаписыватьstatic inject
свойство.4. @AshleyGrant Отлично, это то, что я искал. Если вы добавите свой комментарий в качестве ответа, я приму его.