私はember pre 1.0を使用して単純なソート/ページネーションコントローラーを書いています。ユーザーがテーブルの列ヘッダーをクリックしたときに、コントローラーの並べ替えプロパティを変更したいと考えています。ルーターの sortUser メソッドを指す単純なアクションヘルパーがありますが、ルートが「username」や「id」などのパラメータとして使用できる生の文字列を渡すことができないようです
また、私のURLが壊れているようです(このURLを取得しています)
http://localhost:8000/#/sort/undefined
それ以外の
http://localhost:8000/#/sort/username
前もって感謝します
<table width="250px">
<thead>
<th><a {{action sortUsers "id" href=true}}>id</th>
<th><a {{action sortUsers "username" href=true}}>username</th>
<th>update</th>
<th>delete</th>
</thead>
<tbody>
これが私のルーターです(複雑さを取り除いていますが、ネストされたルートです)
PersonApp.Router = Ember.Router.create({
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/',
paginateUsers: Ember.Route.transitionTo('paginated'),
sortUsers: Ember.Route.transitionTo('index.sort.index'),
connectOutlets: function(router, context) {
router.get('applicationController').connectOutlet('person', router.get('store').findAll(PersonApp.Person));
},
index: Ember.Route.extend({
route: '/'
}),
paginated: Ember.Route.extend({
route: '/page/:page_id',
connectOutlets: function(router, context) {
router.get('personController').set('selectedPage', context.page_id);
},
exit: function(router) {
router.get('personController').set('selectedPage', undefined);
}
}),
sort: Ember.Route.extend({
route: '/sort/:column',
serialize: function(router, context) {
if (context) { return { sort: context.sort } }
return {sort: undefined}
},
deserialize: function(router, context) {
return { sort: context.column }
},
connectOutlets: function(router, context) {
router.set('personController.sortProperties', ['username']);
router.get('personController').set('selectedPage', 1);
},
アップデート
私は今、これの完全なjsfiddleを実行しています(サイドフィルター+ページネーションに沿った並べ替え)