11

Aurelia に UserRouter という名前のコンポーネントがあるとします。これは子ルーターであり、UserProfile、UserImages、および UserFriends へのルーティングを処理します。

UserRouter が API から (canActivate で) ユーザーをロードし、このユーザー データをサブ コンポーネントに渡します。

データの読み込みは問題ありませんが、サブコンポーネントに渡してすべてが読み取れるようにするにはどうすればよいですか? たとえば、 に属性を配置します<router-view>

サブコンポーネントの bind() メソッドで bindingContext 引数を試しましたが、うまくいきませんでした。

ありがとう

4

5 に答える 5

3

ルーター/ユーザー オブジェクトを<router-view>

<router-view router.bind="router"></router-view>

私も同じ問題を抱えているので、あなたが思いついたものを見てみたいです!!

于 2015-07-15T08:04:56.063 に答える
2

イベント アグリゲーターを使用して、データを含むイベントを発行し、サブ コンポーネントをサブスクライブしてそのイベントをリッスンすることができます。これにより、それらの間の結合が回避されます。ただし、私が考えていない欠点があるかもしれません。

于 2015-06-10T18:36:22.557 に答える
0

オブジェクトを渡すジェネリック メソッドを実装できます。

configureRouter(config, router){
    this.router = router;
    ...

    this.router.navigateWithParams = (routeName, params) => {
        let routerParams = this.router.routes.find(x => x.name === routeName);
        routerParams.data = params;
        this.router.navigate(routeName);
    }

}

次に、次のようにプログラムで使用できます。

goToSomePage(){
     let obj = { someValue: "some data", anotherValue: 150.44}
     this.router.navigateWithParams("someRoute", obj );
}

最後に、宛先ページでパラメーターを取得できます。

 activate(urlParams, routerParams)
 {
      this.paramsFromRouter = routerParams.data;
 }
于 2016-07-12T03:34:27.903 に答える