2

アプリを新しいemberjsルーティングAPIに移行しようとしています。

古いルーターでは、IDによって保存されたオブジェクトと、一連のパラメーターによって記述された新しいオブジェクトに同様のURIを提供するためのいくつかの回避策がありました。これは、オブジェクトを永続的に保存せずに、ユーザー間でオブジェクトへのリンクを交換できるようにするために行われました。これは私のアプリからの2つの単純化された有効なルートです:

/objects/12                   // fetch object by id (/objects/:object_id)
/objects/<serialized params>  // build new object from params (/objects/:params)

このルートは両方とも、すべて動的部分があり、静的部分が等しいため、ルーターに似ています。RouteMatcherだから私は正しいルートをピックアップするカスタムを書きました。クエリ文字列の解析が不足しているため、このハックを迅速かつ半合法的な解決策として実行する必要がありました。また、githubにはこの機能に関する古いチケットがあります。

新しいルーターでは、マッチングが個別のパッケージ(route-recognizer)に抽出されているため、トリックを実行できません(または、ハッキングやインジェクションでいっぱいになります)。

ご覧のとおり、次のオプションから選択する必要があります。

  • URIを完全に書き直し、交差するすべてのルートを分離します
  • URIを書き直しますが、新しいEmber.Routerのクエリ文字列パーサーを実装してみてください
  • すべてのロジックを1つのルートに入れ、シリアル化/逆シリアル化メソッドのみを再実装します(何か汚い)

2番目の解決策はよりクリーンなようです。

複雑ではない最良の決定は何でしょうか?別の方法を探す必要がありますか?

4

1 に答える 1

5

現在のルーターは、クエリ文字列パラメーターをサポートしていません。

このバグはhttps://github.com/emberjs/ember.js/issues/1773で追跡しています。あなたはそれをフォローしたいかもしれません。

それまでの間、最善の策は、おそらく動的セグメントを使用し、手動でシリアル化(serializeフックを使用)および逆シリアル化(modelフックを使用)することです。

于 2013-01-14T18:44:50.690 に答える