我正在使用ember pre 1.0编写一个简单的排序/分页控制器。当用户单击表上的列标题时,我想更改控制器上的排序属性。我有一个简单的操作助手,指向我的routers sortUser方法,但我似乎无法传入路由可以用作参数的原始字符串,如“username”或“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
其中的一个现在正在运行(沿边过滤器排序+分页)