2

現在、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 にしたいのですが、スラッシュが多くて読みにくいです。それとも、セグメントは常に「:/」で始まらなければならないという規則ですか?

4

1 に答える 1

0

ここここで説明されているように、リソースのネストを使用する必要があります

App.Router.map(function() {
    this.route('/');
    this.resource('genre', { path: '/genre/:genre_id' }, function(params) {
        this.resource('sorting', { path: '/sorting/:sorting_id' }, function(params) {
            ...
        });
     });
});
于 2013-02-09T22:02:14.063 に答える