ember.js路由器是否同时支持来自不同路由的多个参数?

时间:2013-03-15 00:37:10

标签: ember.js

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

上面的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,它将在今天实现这一目标

这是project github页面,here是github上emberjs项目的未解决问题

0 个答案:

没有答案