我的用户路线有这样的参数:
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);
}
}
});
感谢。