Emberjs Query params不会再次访问

时间:2014-04-18 14:13:56

标签: javascript ember.js ember-data

我的用户路线有这样的参数:

http://localhost:8000/#/users/index?page=2&pageSize=1

问题是,如果我转到第2页然后转到完全不同的路线然后返回 http://localhost:8000/#/users/index它仍向我显示第2页,而不是第1页的默认值。我花了一天的时间来跟踪此问题并且无法解决问题 - 请帮忙。

这是流程:

  • 转到用户页面,请求http://localhost:8000/api/users?page=1&pageSize=1&query=&status=active(正确)

  • 点击第2页,向http://localhost:8000/api/users?page=2&pageSize=1&query=&status=active发出请求(正确)

  • 点击其他路线(未提出要求 - 正确)

  • 点击没有查询参数的用户链接,向http://localhost:8000/api/users?page=2&pageSize=1&query=&status=active发出请求(错误 - 网址没有查询参数默认为第1页)

  • 再次点击其他路线

  • 再次单击用户链接,并向http://localhost:8000/api/users?page=1&pageSize=1&query=&status=active发出请求(正确,页面已正确设置为1)

这里有一些代码可以给你一个想法。

App.UsersIndexRoute = App.AuthenticatedRoute.extend(App.PaginationRouteMixin,{
  queryParams: {
    query: {refreshModel: true},
    status: {refreshModel:true}
  },
  model: function(params) {
    return this.store.find('user',params);
  },
});

App.UsersIndexController = Em.ArrayController.extend(App.PaginationMixin,{
  needs:['users'],
  queryParams: ['query','status'],
  query: '',
  status:'active'
});

App.PaginationRouteMixin = Em.Mixin.create({
  queryParams: {
    page: {refreshModel:true},
    pageSize: {refreshModel:true},
  }
});

App.PaginationMixin = Em.Mixin.create({
  pagination: function () {
    if (this.get('model.isLoaded')) {
      modelType = this.get('model.type');
      return this.get('store').typeMapFor(modelType).metadata.pagination;
    }
  }.property('model.isLoaded'),

  pages: function() {
    var availablePages = this.get('availablePages'),
    pages = [],
    page;
    for (i = 0; i < availablePages; i++) {
      page = i + 1;
      pages.push({ page_id: page.toString() });
    }
    return pages;
  }.property('availablePages'),

  currentPage: function() {
    return parseInt(this.get('pagination.CurrentPage'), 10) || 1;
  }.property('pagination'),

  nextPage: function() {
    var nextPage = this.get('currentPage') + 1;
    var availablePages = this.get('availablePages');
    if (nextPage <= availablePages) {
      return Ember.Object.create({id: nextPage});
    }else{
      return Ember.Object.create({id: this.get('currentPage')});
    }
  }.property('currentPage', 'availablePages'),

  prevPage: function() {
    var prevPage = this.get('currentPage') - 1;
    if (prevPage > 0) {
      return Ember.Object.create({id: prevPage});
    }else{
      return Ember.Object.create({id: this.get('currentPage')});
    }
  }.property('currentPage'),

  availablePages: function() {
    return this.get('pagination.PageCount');
  }.property('pagination'),

  pageSize:"10",
  page:"1",
  queryParams:['page','pageSize'],
  actions:{
    setPage:function(pageId){
      this.set('page', pageId);
    }
  }

});

感谢。

0 个答案:

没有答案