设置页面大小 Sencha touch
Set page size Sencha touch
我一直在尝试设置页面大小,以便我的应用 运行 更快。我正在读取一个巨大的 xml 文件(数千行),我想使用 ListPaging 插件一次只加载一个 'page'。
这是我的清单:
xtype : 'list',
plugins: {
xclass: 'Ext.plugin.ListPaging',
autoPaging: true,
loadMoreText : 'Loading more...',
noMoreRecordsText : 'loaded'
},
store : 'mainStore',
height : '100%',
layout : 'fit',
id: 'myList',
flex : 5,
itemTpl : "foo"
这是我的商店:
config: {
model : 'myApp.model.foo',
storeId: 'mainStore',
autoLoad: true,
//currentPage: 1,
//buffered: true,
pageSize: 15,
proxy : {
type : "ajax",
url : 'resources/images/data/fooBar.xml',
startParam: 'offset',
reader : {
type : "xml",
rootProperty : 'foo',
record : 'bar'
}
}
}
然而,当我 运行 这个时,我得到的只是整个列表底部的 'loading more...' 文本(不是向下的 15 个项目),然后它只加载相同的 xml 数据,但这次只是将它连接到整个 'list' 的末尾。
如何设置页面大小,以便每个 'page' 只显示 15 个左右的项目,然后当我滚动到列表底部(有 15 个项目长)时,我得到下一个15 个项目连接到最后 15 个项目,总共显示 30 个项目..等等。
使用 Sencha Touch 2.4.1
更新:
这是配置:
config: {
model : 'c17App.model.approaches',
storeId: 'mainStore',
autoLoad: true,
pageSize: 15,
proxy : {
type : "ajax",
url : 'resources/images/data/approach_all.xml',
total: 17,
start: 1,
limit: 15,
reader : {
type : "xml",
rootProperty : 'approaches',
record : 'approach',
totalProperty: 'total'//maybe needs to be a number?
}
}
}
从您提供的场景来看,您的网络服务似乎不符合 Sencha 的 ListPaging
插件。
pageSize
在 store
config
中被您正确使用。
config: {
pageSize: 15,
......
}
您的 API 响应应具有以下属性以支持 ListPaging
:
total
:这个 field/property 将与您的 API 一起提供。通过这个值,插件决定应用程序是否到达列表末尾。
start
:这是插件在Headers
中发送的,远程代理会知道从哪个索引位置开始获取数据。
limit
:这不过是你的pageSize
。它也由 Headers
中的插件发送,远程代理将知道它应该从 start
索引中获取多少数据数据。
因此请检查您的 api 响应是否具有 total
、start
和 limit
参数。如果存在,只需在您的代理中添加此 reader:
reader: {
type: 'xml', // 'json' if the api is giving response in json format
rootProperty: 'xyz', // Depends on your api response.
totalProperty: 'total'
}
你的问题就会得到解决。
随时要求任何其他说明。
-------------------------------------编辑-------------------------------------------- -
'total
'、'start
' 和 'limit
' 应该出现在 api 响应中以支持列表分页。您不必在您的代理中明确发送它(因为您在编辑部分发送)
我一直在尝试设置页面大小,以便我的应用 运行 更快。我正在读取一个巨大的 xml 文件(数千行),我想使用 ListPaging 插件一次只加载一个 'page'。
这是我的清单:
xtype : 'list',
plugins: {
xclass: 'Ext.plugin.ListPaging',
autoPaging: true,
loadMoreText : 'Loading more...',
noMoreRecordsText : 'loaded'
},
store : 'mainStore',
height : '100%',
layout : 'fit',
id: 'myList',
flex : 5,
itemTpl : "foo"
这是我的商店:
config: {
model : 'myApp.model.foo',
storeId: 'mainStore',
autoLoad: true,
//currentPage: 1,
//buffered: true,
pageSize: 15,
proxy : {
type : "ajax",
url : 'resources/images/data/fooBar.xml',
startParam: 'offset',
reader : {
type : "xml",
rootProperty : 'foo',
record : 'bar'
}
}
}
然而,当我 运行 这个时,我得到的只是整个列表底部的 'loading more...' 文本(不是向下的 15 个项目),然后它只加载相同的 xml 数据,但这次只是将它连接到整个 'list' 的末尾。
如何设置页面大小,以便每个 'page' 只显示 15 个左右的项目,然后当我滚动到列表底部(有 15 个项目长)时,我得到下一个15 个项目连接到最后 15 个项目,总共显示 30 个项目..等等。
使用 Sencha Touch 2.4.1
更新: 这是配置:
config: {
model : 'c17App.model.approaches',
storeId: 'mainStore',
autoLoad: true,
pageSize: 15,
proxy : {
type : "ajax",
url : 'resources/images/data/approach_all.xml',
total: 17,
start: 1,
limit: 15,
reader : {
type : "xml",
rootProperty : 'approaches',
record : 'approach',
totalProperty: 'total'//maybe needs to be a number?
}
}
}
从您提供的场景来看,您的网络服务似乎不符合 Sencha 的 ListPaging
插件。
pageSize
在 store
config
中被您正确使用。
config: {
pageSize: 15,
......
}
您的 API 响应应具有以下属性以支持 ListPaging
:
total
:这个 field/property 将与您的 API 一起提供。通过这个值,插件决定应用程序是否到达列表末尾。start
:这是插件在Headers
中发送的,远程代理会知道从哪个索引位置开始获取数据。limit
:这不过是你的pageSize
。它也由Headers
中的插件发送,远程代理将知道它应该从start
索引中获取多少数据数据。
因此请检查您的 api 响应是否具有 total
、start
和 limit
参数。如果存在,只需在您的代理中添加此 reader:
reader: {
type: 'xml', // 'json' if the api is giving response in json format
rootProperty: 'xyz', // Depends on your api response.
totalProperty: 'total'
}
你的问题就会得到解决。 随时要求任何其他说明。
-------------------------------------编辑-------------------------------------------- -
'total
'、'start
' 和 'limit
' 应该出现在 api 响应中以支持列表分页。您不必在您的代理中明确发送它(因为您在编辑部分发送)