2017-03-25 14 views
1

モジュール化を念頭に置いてTypeScriptを使用してAurelia Webアプリケーションを構築しています。つまり、アプリケーションのすべての部分が独立している必要があり、将来的にメンテナンスが容易になるということです。Aureliaのモジュラー依存関係登録

私が最後の数日間頭痛を引き起こす原因は、私がの私の依存関係をどのように(more)modularな方法で登録できるのか分かりません。です。私が意味することは、コードを使って簡単に説明することができます。

例えば、私は自分のアプリケーションでは、次のインタフェースを持っている:

はこのインタフェースの
export interface HeaderItem { 
    name: string; 
    url: string; 
} 

実装は自分のアプリケーションの最上部のナビゲーションセクションに表示されます。新しいトップレベルセクションを追加する必要がある場合は、開発者はHeaderItemインターフェイスを実装して実装をコンテナに登録するという考えがあります。

私のナビゲーションコンポーネントのコードは@allインジェクションを使用し、次のようになります。

export class Header { 
    headerItems: any[] = []; 

    constructor(@all('HeaderItem') private _headerItems : any[]){ 
    this.headerItems = _headerItems; 
    } 
} 

だから HeaderItemキーに登録されているすべてのタイプがコンテナから解決されます。私はそれを好きではない

aurelia.container.registerSingleton('HeaderItem', BatchHeaderItem); 

:私を悩ます何

は、インタフェースのすべての実装は、このようなmain.tsファイルに登録する必要がありますということです。私が探しているのは、すべてのモジュールがその依存関係を登録できるという方法です。私はちょうどそのModuleConfigurationクラスをmain.tsファイルに登録するだけでいいです。

しかし、今まで私が試したことは、Moduleインターフェイスを作成し、それを私のモジュール用に実装したことです。次に、完全に白い画面という結果になるconfigureメソッドでnewを使用してインスタンスを作成しようとしました。なぜこれが起こっているのか分かりませんか?

また、私は実装をコンテナに登録し、それをconfigureメソッドで解決し、そのメソッドを呼び出して、期待どおりに動作しないことを試みました。

モレキュラーアプローチに合わせて組み込みのAurelia依存性注入機構を使用してコンポーネントの登録を分離するより良い方法を知っていますか?

答えて

0

あなたはAureliaを注入し、モジュール、サービスをこのように登録しようとしましたか?

import { autoinject } from 'aurelia-framework' 
import { Aurelia } from 'aurelia-framework' 

@autoinject() 
export class MyModule { 
    constructor(
    private aurelia: Aurelia 
) { 
    this.init(); 
    } 

    private init(){ 
    this.aurelia.container.registerSingleton(...register what you want...); 
    } 
} 
+0

どのようにMyModuleクラスを登録または呼び出すことができますか?私の質問で述べたように、問題の根源は、起動時に何かを登録するコンポーネントをインスタンス化して呼び出すことができないということです。画面は白色のままです。コンソールには何もありません。 –

+0

main.tsの 'aurelia.container.get(MyModule);'をインポートしてあなたのモジュールを自動登録することができます。ちょっとしたレポを作成して、一緒に作業することができます。 – zedL

+0

この情報も非常に役に立ちます=> https://github.com/dryajov/aurelia-factory-methods – zedL

関連する問題