我正在使用 ember pre 1.0 编写一个简单的排序/分页控制器。当用户单击表格上的列标题时,我想更改控制器上的排序属性。我有一个简单的动作助手,它指向我的路由器 sortUser 方法,但我似乎无法传递路由可以用作参数的原始字符串,例如“用户名”或“id”
我的网址也似乎坏了(获取此网址)
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(沿着侧过滤器+分页排序)