Подкачка списка из json

#list #paging #extjs

#Список #подкачка #extjs

Вопрос:

Я, наконец, могу извлечь свои данные из файла json, НО система подкачки по-прежнему отстой. Свойство pageSize, похоже, не реагирует, поэтому, когда я нажимаю на текст плагина load more, который появляется внизу моего списка, он каждый раз добавляет все мои элементы json в мой список. Я уверен в том, что я почти на месте, но я не вижу, как это сделать.

Вот код:

 Ext.setup({

tabletStartupScreen: 'tablet_startup.png',
phoneStartupScreen: 'phone_startup.png',
icon: 'icon.png',
glossOnIcon: false,

onReady : function() {

    var dataLink;
    if (Ext.is.Desktop) {
        dataLink = "http://127.0.0.1/Appsfan-v2";
    } else {
        dataLink = "http://appsfan.kreactive.eu";
    }

    Ext.regModel('Profile', {
        fields: [
            {name: 'firstname', type: 'string'},
            {name: 'lastname', type: 'string'},
            {name: 'age', type: 'number'}
        ]
    });

    var store = new Ext.data.JsonStore({
        model: 'Profile',
        autoLoad: false,
        remoteFilter: true,
        sortOnFilter: true,
        //sorters: [{property : 'lastname', direction: 'ASC'}],
        pageSize: 1,
        clearOnPageLoad: false,
        proxy: {
            type: 'ajax',
            url: dataLink '/data.json',
            reader: {
                root: 'profile',
                type: 'tree'
            }
        }
    });
    console.log(store)

    //console.log(store.loadPage(0))

    var groupingBase = new Ext.List({
        fullscreen: true,
        itemTpl: '<div class="contact2"><strong>{firstname}</strong> {lastname} -> {age}</div>',
        indexBar: false,
        store: store,
        plugins: [{
            ptype: 'listpaging',
            autoPaging: false
        }]
    });



   var panel = new Ext.Panel({
        layout: 'card',
        fullscreen: true,
        items: [groupingBase],
        dockedItems: [{
            xtype: 'toolbar',
            title: 'paging example',
        }]
    })
   //console.log(datas)
}
});
  

JSON

 {
"profile": [{
    "firstname": "firstname1",
    "lastname": "lastname1",
    "age": "1"
},{
    "firstname": "firstname2",
    "lastname": "lastname2",
    "age": "2"
},{
    "firstname": "firstname3",
    "lastname": "lastname3",
    "age": "3"
}]
}
  

Спасибо

Ответ №1:

Вы можете установить параметр конфигурации clearOnPageLoad в вашем хранилище. Это приведет к удалению предыдущих записей при загрузке следующей страницы с разбитыми на страницы данными.

Вот пример:

 Ext.regStore('BarginsStore', {
    model: 'BarginModel',
    autoLoad: false,
    pageSize: 6,
    clearOnPageLoad: false,
});