現在、pre1 に基づいて Ember を現在のリリースの pre4 に移行しようとしています。私の pre1-code では、ルートを次のように定義しました。
formCreated : Ember.Route.extend({
route : '/genre=:genre/sorting=:sorting/location=:location/range=:range/time=:date/:timeFrame',
....
})
このルートは私にとってはうまくいきましたが、現在、pre4 でこの動作を模倣するのに苦労しています。これが私のアプローチです:
App.Router.map(function() {
this.route("/");
this.route("formCreated", { path: "/genre=:genre/sorting=:sorting/location=:location/range=:range/time=:date/:timeFrame" });
});
App.FormCreatedRoute = Ember.Route.extend({
serialize: function(context, params){
// here i am returning a hash containing all the dynamic segments
}
});
何がうまくいかないのですか? アプリがこの状態になると、URL が正しく更新されません。私はこの結果を見ています:
/genre=:genre/sorting=:sorting/location=:location/range=:range/time=:date/6:00-19:00
そのため、動的セグメントのほとんどが更新されません。カスタムのシリアル化メソッドが、動的セグメントごとに 1 つのプロパティが設定されている適切なハッシュ オブジェクトを返すことを確認しました。
ルートごとに複数の動的セグメントが pre4 でも可能ですか、それともルート ネスティング アプローチなどに切り替える必要がありますか?
更新: 根本的な原因が見つかりました: ルート に使用した構文が原因でエラーが発生したことを発見しました。次のように変更しました(「=」を「/」に置き換えました):
this.route("formCreated", { path: "/genre/:genre/sorting/:sorting/location/:location/range/:range/time/:date/:timeFrame" });
パスの構造に関するドキュメントはありますか? ember-pre1 から構文が変わったようです。ユーザーフレンドリーな URL にしたいのですが、スラッシュが多くて読みにくいです。それとも、セグメントは常に「:/」で始まらなければならないという規則ですか?