1

http://jsfiddle.net/BBt2h/1/

上記のjsfiddleは、次のことができる簡単なember.jsアプリを示しています。

  • コンテンツにページを追加する
  • 列で並べ替え
  • 次のように入力してコンテンツをフィルタリングします

ページネーションルートのURLは次のようになります/foo/#/ page / 2

ソートルートのURLは次のようになります/foo/#/ sort / id

フィルタルートのURLは次のようになります/foo/#/ search / text

TL; DR =>これは、ArrayControllerで見つかった多くのデータをふるいにかけるのに役立つ単純なミックスインです。

ルート設定は次のようになります

PersonApp.Router.map(function(match) {
    this.resource("person", { path: "/" }, function() {
        this.route("page", { path: "/page/:page_id" });
        this.route("search", { path: "/search/:page_term" });
        this.route("sort", { path: "/sort/:page_column" });
    });
});

PersonApp.PersonSortRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    this.controllerFor('person').set('sortBy', model);
  },
  model: function(params) {
    return PersonApp.Page.create({column: params.page_column});
  }
});

PersonApp.PersonSearchRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    this.controllerFor('person').set('filterBy', model.get('term'));
  },
  model: function(params) {
    return PersonApp.Page.create({term: params.page_term});
  },
  serialize: function(model) {
    return { page_term: model.term };
  }
});

PersonApp.PersonPageRoute = Ember.Route.extend({
    model: function(params) {
        return PersonApp.Person.find(params.page_id);
    },
    setupController: function(controller, model) {
        this.controllerFor('person').set('selectedPage', model.get('id'));
    }
});

PersonApp.PersonRoute = Ember.Route.extend({
    model: function(params) {
        return PersonApp.Person.find();
    }
});

私の問題の基本

1.)ユーザーがページ2のリンクをクリックすると、URLが次のように変更されます。

/ foo /#/ page / 2

2.)次に、同じユーザーがデフォルトIDではなくユーザー名で並べ替えることを決定したため、ユーザー名をクリックします

/ foo /#/ sort / username

**ページを失いましたが、コンテンツにはまだ2のselectedPageがあります(ページネーションから)

3.)最後に、検索/フィルターを使用してリストをフィルターに掛けることを決定します

/ foo /#/ search / dave(4文字を入力した後)

**ソートパラメータとページパラメータが失われました(ただし、状態はコントローラに設定されています)

ここでの問題は、ユーザー名で並べ替えてすべてを「dave」という作品でフィルタリングした後、ページ#2のURLをコピーして、同僚にメールで貼り付けて、私が今見ている正確な結果...しかし、あなたが言うことができるように、私のURLはもはやすべての状態を反映していません。

さらに、URLを変更するたびにコンテキストが失われるため、戻るボタンは期待どおりに機能します。

これを達成するためにルートを構築するにはどうすればよいですか(RC1ルーターAPIがこれをサポートしていると仮定します)?

新しいルーターが統合される前(2013年1月初旬)にこのようなものが機能していました

アップデート

alexspellerには、今日これを実現するカスタムミックスインがあるようです

これがプロジェクトのgithubページで、これがgithubのemberjsプロジェクトの未解決の問題です。

4

0 に答える 0