结果始终分页时的服务器端分页
Server side paging when result is always paginated
我正在学习Ember,我正在尝试做一个分页列表,从RESTful服务中检索数据。
该服务返回数据,如下所示:
{
result: [
{
id: " ALFKI "
companyName : " Alfreds Futterkiste "
contactName : " Maria Anders " ,
ContactTitle : " Sales Representative "
address : " Obere Str 57" ,
city: "Berlin " ,
postalCode : " 12209 " ,
country: " Germany" ,
phone: " 030-0074321 "
fax: " 030-0076545 "
link: " http://localhost:2828/customers/ALFKI "
}
{
id: " ANATR "
companyName : " Ana Trujillo sandwiches and ice cream "
contactName : " Ana Trujillo " ,
ContactTitle : "Owner " ,
address : " 2222 Avenue of the Constitution " ,
city: " Mexico DF "
postalCode : " 05021 " ,
country: " Mexico " ,
phone: " (5) 555-4729 "
fax: " (5) 555-3745 "
link: " http://localhost:2828/customers/ANATR "
}
]
metadata : {
offset : 1,
limit : 10,
totalCount : 92,
links: {
self " http://localhost:2828/customers?format=json&offset=1&limit=10 "
last: " http://localhost:2828/customers?format=json&offset=82&limit=10 "
next : " http://localhost:2828/customers?format=json&offset=11&limit=10 "
}
}
}
服务器始终返回带有分页数据的集合作为链接。要请求新页面,URL 的格式如下:
http://api.server/customers?offset=1&limit=10
我的路由配置是:
Northwind.CustomersRoute = Ember.Route.extend({
model: function () {
var controller = this.controllerFor('customer');
return this.get('store').findQuery('customer', {offset: controller.offset, limit:controller.limit});
}
});
我怎样才能实现控制器到这个场景?
提前谢谢。
解决了。
新路由器
Northwind.CustomersRoute = Ember.Route.extend({
model: function () {
var controller = this.controllerFor('customer');
return this.get('store').findQuery('customer', { offset: controller.offset, limit: controller.limit });
},
setupController: function (controller, model) {
controller.set('model', model);
controller.set('contentLoaded', true);
}
});
我正在使用与此类似的分页混合。
控制器
Northwind.ArrayController = Ember.ArrayController.extend(Northwind.PaginationMixin, {
contentLoaded: false,
loadMetadata: function () {
if (!this.get('contentLoaded')) return;
var model = this.get('model');
var meta = this.get('store').metadataFor(model.type);
if (meta) {
// Metadata object
var metadata = Ember.Object.create({
offset: meta.offset,
limit: meta.limit,
totalCount: meta.totalCount,
links: Ember.makeArray()
});
// Pagination links
if (meta.links) {
for (var link in meta.links) {
var lnkObj = Ember.Object.create(Northwind.Common.Uri.queryParams(meta.links[link]));
lnkObj.set('rel', link);
metadata.links.pushObject(lnkObj);
}
}
this.set('metadata', metadata);
this.set('limit', metadata.limit);
this.set('totalCount', metadata.totalCount);
// offset is automatically calculated based on page property
}
}.observes('contentLoaded'),
refresh: function () {
var offset = this.get('offset');
var limit = this.get('limit');
var self = this;
self.set('contentLoaded', false);
this.get('store').findQuery('customers', { offset: offset, limit: limit }).then(function (result) {
self.set('model', result);
self.set('contentLoaded', true);
});
}.observes('page')
});
https://github.com/jdmartinez/Northwind/tree/pre-0.1
相关文章:
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 使用ajax的服务器端分页&jQuery
- 如何使用数据表进行客户端和服务器端的混合分页,以便对前X行进行客户端分页
- 用于服务器端处理的数据表,包括分页、筛选和搜索
- AngularJS 服务器端排序与分页 - 动态值
- 切换到服务器端分页之前 REST/JSON 响应中的项目数
- 如何使用 ng-table 进行服务器端分页
- 分页如何正确生成数据表(ajax,服务器端)
- 使用服务器端分页链接进行 ajax 无限滚动
- 结果始终分页时的服务器端分页
- 使用 AngularJS 实现服务器端分页
- 在jquery数据表服务器端分页中指定页面大小
- jqGrid使用JsonString JsonReader实现服务器端排序分页过滤
- 在数据表上实现服务器端分页
- 误导jqgrid文档:客户端排序,但服务器端分页
- 剑道服务器端分页发送到MVC控制器
- 如何在jsgrid中进行服务器端分页?
- 使用MySQL、PHP和AngularJS进行服务器端分页
- jQueryDatatables服务器端分页,带有自定义HTTPPOST请求和响应
- 如何使用angular ui引导程序在angular js中实现服务器端分页