4

ember ルーターが再帰パスにルーティングする方法が必要です。

For Example:
/:module
/:module/:submodule
/:module/:submodule/:submodule
/:module/:submodule/:submodule/...

これは、Embers ルーターで行うことができますか?

ソースをバラバラにして例を探してきましたが、ほぼ不可能という結論に達しました。

以前の質問で、誰かが URL を手動で取得して分割する方法を教えてくれましたが、ルーターが解決する状態を作成するのに行き詰まっています。

現在、私のプロジェクトでは、現在 Ember.HashLocation を使用して独自の状態マネージャーをセットアップしています。

これが必要な理由は、モジュール定義がデータベースに格納されており、任意の時点でサブモジュールのサブモジュールを再帰的に追加できるためです。そのため、Application Engine に変更を処理させようとしています。

4

2 に答える 2

1

データベース内のサブモジュールに一意の ID がありませんか? パスで階層を表すのではなく、適切なモジュールまたはサブモジュールに直接移動する必要があるように思えます。もちろん、階層はまだデータ モデルに含まれていますが、ルーティング スキームで表現する必要はありません。使用するだけです:

/module/:moduleId
/submodule/:submoduleId

また、ルートで階層をエンコードしないでください。そうするのが自然かもしれないことは理解していますが、おそらく技術的な理由はありません。

サブモジュールに一意の ID がない場合、少し難しいかもしれません...先祖の ID を (アンダースコアなどで) 連結することで一意の ID を作成できます。これは URL を分割するのと似ていますが、おそらく少しきれいになります. Ember/Ember Data は、複合キーを持つエンティティで使用するのはあまり簡単ではないようです。すべてに単純な数値キーがあれば、すべてが簡単になります (これについて私と議論したい人は、方法を説明してください) !)。

于 2013-01-09T13:52:52.407 に答える
0

次のような意味ですか:

App.Router.map(function(match) {
  match('/posts').to('blogPosts');
  match('/posts/:blog_post_id').to('showBlogPost');
});
于 2013-01-09T09:50:52.957 に答える