什么模式用于提供 aurelia 中自定义元素或属性的全局配置?
What pattern is used to provide global configuration of custom elements or attributes in aurelia?
我知道可以导出配置函数,也可以将组件注册为全局资源。但是,当您的组件提供可以覆盖的 "default" 配置时,您使用什么模式?这需要在配置阶段发生,并且需要应用于组件的所有实例。您是否将 class 与静态成员(打字稿)或其他东西一起使用?或者,我能否创建配置实例、设置属性并将其以某种方式添加到 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"]);
通过稍微阅读此文档解决了这个问题
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"));
}
我知道可以导出配置函数,也可以将组件注册为全局资源。但是,当您的组件提供可以覆盖的 "default" 配置时,您使用什么模式?这需要在配置阶段发生,并且需要应用于组件的所有实例。您是否将 class 与静态成员(打字稿)或其他东西一起使用?或者,我能否创建配置实例、设置属性并将其以某种方式添加到 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"]);
通过稍微阅读此文档解决了这个问题 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"));
}