У меня есть простое приложение контактов/пользователей Прикосновения Sencha, которое показывает список и затем раскрывает больше деталей.
Я достигаю своего сервера с Расширением. Ajax.request использование нашего API, чтобы забрать пользователей и населить список. Однако totalcount обычно выше 500, таким образом, я должен осуществить плагин ListPaging. Из соображений безопасности я вполне уверен, я не могу сделать метода "по доверенности" (потому что я должен использовать "символ" для подтверждения запросов). Возможно, я неправ; документация редка, таким образом, мне нужно повышение.
Мой сервер возвращает следующее:
data: [,…]
hasnextpage: true
haspreviouspage: false
pageindex: 0
pagesize: 9999
success: true
totalcount: 587
totalpages: 14
Мой магазин:
Ext.define('MyApp.store.StudentStore',{
extend: 'Ext.data.Store',
config:{
storeId: 'Students',
model:'MyApp.model.people',
autoLoad:false,
remoteFilter:true, //just trying stuff I've read about
sortOnFilter:true,
clearOnPageLoad: false,
grouper: {
groupFn: function(record) {
return record.get('lastname')[0];
}
},
sorters: 'lastname'
}
});
И моя Точка зрения Списка:
Ext.define('MyApp.view.MainPanel', {
extend: 'Ext.dataview.List',
alias : 'widget.mainPanel',
requires: [
'MyApp.store.StudentStore',
'Ext.plugin.ListPaging'
],
config: {
store : 'Students',
model: 'people',
grouped:true,
sorters: 'lastname',
itemTpl: new Ext.XTemplate(
''+
'{firstname:ellipsis(45)} {lastname:ellipsis(45)}
' +
'{grade} grade
' +
''
),
plugins: [{
xclass: 'Ext.plugin.ListPaging',
autoPaging: true,
bottom: 0,
loadMoreText: ''
}]
}
});
Я хотел бы использовать плагин ListPaging, чтобы автозагрузить следующие 45 пользователей, когда экран завит к основанию. Любой совет значительно ценится!
ОТРЕДАКТИРУЙТЕ: РЕШЕННЫЙ!!
@arthurakay - вы были правы, мой "символ" определенно становился ударенным в какой-то момент..
Так как мой API требует символа для каждого запроса, я смог создать функцию "beforeload", в которой я установил свое полномочие с символом, который я получил на логине - прежде чем ListPaging нужно будет назвать. Так, к тому времени, когда пользователь готов завиться и активировать ListPaging, мой символ снабжен первым отчетом, который я получил от сервера, и волшебно добавляю еще 50 отчетов каждый раз пользовательские свитки к основанию.
Я действительно надеюсь, что это помогает кому-то!!
Ext.define('MyApp.store.PersonStore',{
extend: 'Ext.data.Store',
config:{
storeId: 'Persons',
model:'MyApp.model.PersonModel',
autoLoad:false,
clearOnPageLoad: true,
listeners: {
beforeload: function(store){
store.setProxy({
headers: {
Accept : 'application/json',
Authorization : 'Bearer:' + this.token
},
type: 'ajax',
pageParam: 'pageindex',
url: this.url,
extraParams: {
count: this.count
},
reader: {
type: 'json',
rootProperty:'data',
pageParam: 'pageindex',
totalProperty: 'totalcount'
}
});
}
},
grouper: {
groupFn: function(record) {
return record.data.lastname[0]
}
},
sorters: 'lastname'
},
setParams: function(params){
for (var prop in params){
if (params.hasOwnProperty(prop)){
this[prop] = params[prop];
}
}
}
});
И я добавляю 'setParams', добавляя пункты к магазину здесь:
var feedStore = Ext.getStore('FeedStore');
//call the setParams method that we defined in the store
feedStore.setParams({
token: TOKEN,
count: 50,
url: URL
});