上面的jsfiddle显示了一个简单的ember.js应用程序,允许你
分页路线网址看起来像这样/ foo /#/ page / 2
排序路径网址看起来像这样/ foo /#/ sort / id
过滤器路径网址看起来像这样/ foo /#/ search / text
TL; DR =>这是一个简单的mixin,可以帮助您筛选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页链接,网址更改为
/富/#/页/ 2
2。)然后,同一用户决定按用户名而不是默认ID进行排序,以便他们点击用户名
/富/#/排序/用户名
**现在我丢失了页面,但我的内容仍然有2页的选定页面(来自分页)
3.)最后他们决定使用搜索/过滤器
过滤列表/ foo /#/ search / dave(输入4个字母后)
**现在我丢失了排序参数和页面参数(但状态是在控制器上设置的)
这里的问题是,在我决定按用户名排序并按工作“dave”过滤所有内容后,我需要能够复制第2页的网址 - 并将其粘贴到同事的电子邮件中,这样他们就可以了可以看到我现在看到的确切结果......但是你可以告诉我的网址不再反映所有的状态了。
此外,后退按钮按预期执行,因为我在每次更改网址后丢失了一些上下文。
如何构建我的路由来实现这一点(假设RC1路由器api完全支持这个)?
在合并新路由器(2013年1月初)之前,我有类似的工作
更新
看起来alexspeller有一个定制的mixin,它将在今天实现这一目标