Какой шаблон используется для обеспечения глобальной конфигурации пользовательских элементов или атрибутов в aurelia?
Я знаю, что можно экспортировать функцию конфигурации, а также зарегистрировать компоненты в качестве глобального ресурса. Но какой шаблон вы используете, когда ваш компонент предоставляет конфигурацию "по умолчанию", которую можно переопределить? Это должно происходить на этапе настройки и должно применяться ко всем экземплярам компонента. Используете ли вы класс со статическими членами (машинопись) или что-то еще? Или я могу создать экземпляр конфигурации, установить свойства и как-то добавить его в контейнер DI, чтобы все зависимые компоненты теперь получили этот экземпляр?
import {PagingConfig} from "./PagingConfig";
export class PaginationConfig extends PagingConfig {
boundaryLinks = false;
boundaryLinkNumbers = false;
directionLinks = true;
rotate = true;
forceEllipses = false;
maxSize: number = null;
}
и вот мой main.ts, который настраивает. Как переопределить конфигурацию по умолчанию сверху?
import * as Promise from "bluebird";
import {Aurelia} from "aurelia-framework";
import {PaginationConfig} from "./components/shared/PaginationConfig";
export function configure(aurelia: Aurelia):void {
aurelia.use
.standardConfiguration()
.developmentLogging()
.globalResources(["components/bar/InsightBarCustomElement",
"components/pagination/PaginationCustomAttribute"]);
1 ответ
Решил это, прочитав немного этот документ https://github.com/aurelia/dependency-injection/blob/master/doc/article/en-US/dependency-injection-basics.md
По сути, aurelia, внедряемая в конфигурацию, имеет прикрепленный к ней экземпляр контейнера, поэтому все, что мне нужно было сделать, это создать экземпляр моего типа конфигурации, внести изменения и добавить его в контейнер. Что-то вроде этого
import * as Promise from "bluebird";
import { PaginationConfig } from "./components/shared/PaginationConfig";
import { Aurelia } from "aurelia-framework";
import { Container } from "aurelia-dependency-injection";
export function configure(aurelia: Aurelia): void {
function configurePaginationCustomAttribute(): void {
let paginationConfig = new PaginationConfig();
paginationConfig.firstText = "«";
paginationConfig.previousText = "‹";
paginationConfig.nextText = "›";
paginationConfig.lastText = "»";
aurelia.container.registerInstance(PaginationConfig,paginationConfig);
}
configurePaginationCustomAttribute();
aurelia.use
.standardConfiguration()
.developmentLogging()
.globalResources(["components/bar/InsightBarCustomElement",
"components/pagination/PaginationCustomAttribute"]);
let area: string = aurelia.host.getAttribute("data-area");
console.log("Setting aurelia root", area);
aurelia.start().then(a => a.setRoot(area + "/app/app"));
}