- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用 REST Web 服务为我的应用程序实现列表分页。
这是我的代码
列表.js
Ext.define('bluebutton.view.BlueButton.TestingList', {
extend: 'Ext.List',
xtype: 'testinglistcard',
requires: [
'Ext.field.Select',
'Ext.field.Search',
'bluebutton.view.BlueButton.MemberDetail',
'Ext.plugin.ListPaging',
'Ext.plugin.PullRefresh',
'Ext.dataview.Override'
],
config: {
styleHtmlContent: true,
scrollable: 'vertical',
indexBar: true,
singleSelect: true,
onItemDisclosure: true,
grouped: true,
variableHeights : false,
store : { xclass : 'bluebutton.store.BlueButton.Testing'},
itemHeight :100,
id :'testinglist',
emptyText: '<p class="no-search-results">No member record found matching that search</p>',
itemTpl: Ext.create(
'Ext.XTemplate',
'<div class="tweet-wrapper">',
'<table>',
'<tr>',
'<td>',
' <div class="tweet">',
' <h3>{invoiceId}</h3>',
' <h3>Name: {billNumber}</h3>',
' <h3>Point Avalaible : {invoiceDate} , Last Visited : {invoiceAmount}</h3>',
' </div>',
'</td>',
'</tr>',
'</table>',
'</div>'
),
},
});
store.js
Ext.define('bluebutton.store.BlueButton.Testing', {
extend: "Ext.data.Store",
requires: ['bluebutton.model.BlueButton.Testing'],
config: {
grouper: {
groupFn: function (record) {
return record.get('invoiceId')[0];
}
},
model :'bluebutton.model.BlueButton.Testing',
storeId :'testingstore',
autoLoad: true,
pageSize: 5,
clearOnPageLoad: false,
}
});
模型.js
Ext.define('bluebutton.model.BlueButton.Testing', {
extend: 'Ext.data.Model',
config: {
idProperty: 'testingModel',
fields: [
{ name :'invoiceId'},
{ name: 'billNumber' },
{ name: 'invoiceDate' },
{ name: 'invoiceAmount' },
{ name :'downloadLink'},
],
proxy: {
type: 'rest',
url: 'http://localhost:8080/RESTFulExample/rest/json/metallica/invoicejsonPost',
reader: 'json',
actionMethods: {
create: 'POST',
read: 'POST',
update: 'PUT',
destroy: 'DELETE'
},
noCache: false, // get rid of the '_dc' url parameter
// extraParams: {
// userid: "test",
// // add as many as you need
// },
reader: {
type: 'json',
rootProperty: 'invoice'
},
writer: {
type: 'json',
},
}
}
});
JsonService.java
@GET
@Path("invoicejson/")
@Produces({ MediaType.APPLICATION_JSON })
public Response getInvoicesForCustomerJson(
@PathParam(value = "accountId") String accountId) {
InvoiceListDto invoices = generateMockData();
return Response.ok(invoices).build();
}
private InvoiceListDto generateMockData() {
List<InvoiceDto> invoices = new ArrayList<InvoiceDto>();
invoices.add(new InvoiceDto(1, "37897-001", new Date(), 58.92));
invoices.add(new InvoiceDto(2, "37897-002", new Date(), 293.63));
invoices.add(new InvoiceDto(3, "37897-003", new Date(), 173.3));
invoices.add(new InvoiceDto(4, "37897-004", new Date(), 130.71));
invoices.add(new InvoiceDto(5, "37897-005", new Date(), 270.71));
invoices.add(new InvoiceDto(6, "37897-006", new Date(), 370.71));
invoices.add(new InvoiceDto(7, "37897-007", new Date(), 570.71));
invoices.add(new InvoiceDto(8, "37897-008", new Date(), 670.71));
invoices.add(new InvoiceDto(9, "37897-009", new Date(), 770.71));
invoices.add(new InvoiceDto(10, "37897-010", new Date(), 970.71));
invoices.add(new InvoiceDto(11, "37897-011", new Date(), 3370.71));
invoices.add(new InvoiceDto(12, "37897-012", new Date(), 1220.71));
invoices.add(new InvoiceDto(13, "37897-013", new Date(), 1230.71));
invoices.add(new InvoiceDto(14, "37897-014", new Date(), 140.71));
invoices.add(new InvoiceDto(15, "37897-015", new Date(), 150.71));
invoices.add(new InvoiceDto(16, "37897-016", new Date(), 160.71));
invoices.add(new InvoiceDto(17, "37897-017", new Date(), 170.71));
return new InvoiceListDto(invoices);
}
我们如何实现sencha的分页?我应该在java或sencha端实现分页功能吗?
最佳答案
首先,如果你想实现分页,你就无法在 Java 和 Sencha 之间进行选择,你必须同时使用两者才能使其正常工作。服务应该能够接受诸如开始、页面、大小等参数,并且您的存储/代理应该向服务发送正确的参数以获取正确的数据页面。
有一个List Paging plugin sencha 中提供,您应该使用它,因为它工作起来很容易。除此之外,您可以查看此或任何其他 listPaging 教程:http://www.mysamplecode.com/2012/05/sencha-touch-list-load-more.html
如果您不想使用插件并实现您的方式,那么通过将您的列表标记为可滚动和 onscrollend 也很容易,您只需检查位置,如果它接近末尾,您只需加载商店并使用其记录创建新项目以推送到列表中。这是我在滚动结束时用来填充数据的函数:
onScrollEndOfList: function(scroller, x, y, store) {
var pctScrolled = (x/scroller.maxPosition.x)*100;
var remainingWidth = (scroller.maxPosition.x -x);
if(!store.config.isFullyLoaded && remainingWidth < 1000/*pctScrolled > 70 && FETCH_DATA */){
console.log("Already scrolled "+pctScrolled+", time to load more data. Width remaining="+remainingWidth);
if(Utils.storeFullyLoaded(store)){
console.log("Store is now fully loaded with "+(store.currentPage * store.getPageSize()));
store.config.isFullyLoaded = true;
return false;
} else {
store.nextPage({ addRecords: true });
console.log("loading next page");
return true;
}
return false;
}
},
下面的代码可以确定我们是否已经到达终点:
storeFullyLoaded: function(store) {
var total = store.getTotalCount();
return total !== null ? store.getTotalCount() <= (store.currentPage * store.getPageSize()) : false;
},
要使 getTotalCount
正常工作,您需要在商店代理上进行 totalProperty
配置,如下所示:
reader: {
type: 'json',
rootProperty: 'myResponse.data',
totalProperty: 'myResponse.status.totalCount' // where to look for total?
}
PS:它还有一些自定义代码,这就是为什么您应该尝试理解基础而不是直接使用此代码
关于javascript - Sencha 触摸列表分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15065606/
如标题所示,ans_list是一个答案列表,ans_index是一个数字(答案在词汇表中的索引,但与atm无关) 这里生成的 tree.anslist 是什么? (例如,仅针对第一个),忽略迭代。 f
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将具有一个元素的东西拿走。 这与 How do I “flatte
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将带有一个元素的东西拿走。 这与 How do I “flatte
这个问题已经有答案了: Convert nested list to 2d array (3 个回答) 已关闭 7 年前。 java中有没有快捷方式可以转换 List> 到 String[][] ?
我在排序时遇到问题 List> 。我创建了一个自定义比较器,在其中编写了对数据进行排序的代码。 public class CustomComparator implements Comparator
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Java Generics: Cannot cast List to List? 我只是想知道为什么下面的java代
试图想出一个 LINQy 方法来做到这一点,但我什么也没想到。 我有一个对象列表<>,其中包含一个属性,该属性是逗号分隔的字母代码列表: lst[0].codes = "AA,BB,DD" lst[1
假设我有这些任务: points = [] point = (1, 2) 我怎么会这样做: points += point 它工作得很好,并且给了我点 = [1, 2]。但是,如果我这样做: poin
如何在 scala 中将 List[Task[List[Header]]] 类型转换为 Task[List[Header]]。 我有一个方法返回 Task[List[Header]] 并多次调用 do
如何在 Java 中查找二维列表的元素? 我有一个参数为 List> 的函数我想知道如何找到这个列表的行和列。 最佳答案 如果你喜欢 List> obj 然后你就可以像这样访问 obj.get(cur
分配 List到 List工作正常。 分配 List>到 List>不编译。 代码 public class Main { public static void main(String[] a
我正在用 Java 编写一个方法,该方法必须接收并迭代 Serializable 的 List。 有什么区别: public void myMethod(List list) { } 和 public
我看到很多人想用 mvvm 更新网格/列表/树的一部分,但他们不想刷新整个列表。 对于所有遇到此问题的人,我做了以下示例。 希望这对你有用。 最佳答案 这是一个简单的例子。整个代码中最重要的是: Bi
我正在为现有的 C++ 库编写包装器,该库使用列表,其中 T 是自定义结构。我被建议使用 vector 而不是列表,但我试图避免修改库。 为了更好地理解这个场景,我做了一个简单的应用程序,使用一个列表
List list List list 这两种声明有什么区别吗? 谢谢, 最佳答案 是的。 List可以包含所有派生自 Base 的不同事物的混合物. List包含同质项(从某种意义上说,它们必须全部
有人可以尽可能详细地解释以下类型之间的区别吗? List List List 让我更具体一点。我什么时候想使用 // 1 public void CanYouGiveMeAnAnswer(List l
我有一个元组列表,每个元组都是一对列表。所以我的数据看起来像: mylist = [(['foo', 'bar'], ['bar', 'bar']),(['bar', 'bar'],['bar', '
也许是一个时髦的标题,但我遇到了以下问题: 给定一个类型为 (a * b) list 的列表,我想创建一个类型为 (a * b list) list 的新列表。一个例子: 给定列表 let testL
我是一名优秀的程序员,十分优秀!