2017-05-05 5 views
0

私は構成機能をエクスポートでき、コンポーネントをグローバルリソースとして登録できることも知っています。しかし、あなたのコンポーネントがオーバーライドできる "デフォルト"の設定を提供しているときは、どのパターンを使用しますか?これは構成段階で発生する必要があり、コンポーネントのすべてのインスタンスに適用する必要があります。あなたは静的なメンバー(typescript)または何か他のクラスを使用していますか?または、設定のインスタンスを作成し、プロパティを設定してDIコンテナに追加して、すべての依存コンポーネントがそのインスタンスを取得できるようにすることはできますか?aureliaのカスタム要素または属性のグローバル構成を提供するために使用されるパターンは何ですか?

import {PagingConfig} from "./PagingConfig"; 

export class PaginationConfig extends PagingConfig { 

    boundaryLinks = false; 
    boundaryLinkNumbers = false; 
    directionLinks = true; 
    rotate = true; 
    forceEllipses = false; 
    maxSize: number = null; 
} 

ここで設定するのは私のmain.tsです。上記のデフォルト設定をどのように上書きするのですか?基本的にはアウレリアは、コンフィギュレーションに注入され、この文書 https://github.com/aurelia/dependency-injection/blob/master/doc/article/en-US/dependency-injection-basics.md

は、それに接続されているコンテナのインスタンスを持っているので、私がしなければならなかったすべては、私のコンフィギュレーションタイプのインスタンスを変更を加えるある少しを読むことによって、これを解決

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"]); 

答えて

0

それをコンテナに追加します。このようなもの

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")); 

} 
+0

これはすばらしい方法です。 IoCコンテナは、こうした種類の問題を解決するのに最適です。 https://github.com/Vheissu/Aurelia-Configurationのような一般化されたソリューションに行くこともできます – zewa666

関連する問題