Sencha Touch List Добавить новые результаты из магазина Загрузить - PullRequest
1 голос
/ 25 августа 2011

У меня есть простой список, который загружает данные из JSON Store.У меня решена проблема с подкачкой страниц на стороне сервера, поэтому, чтобы получить новую страницу, я меняю прокси магазина и устанавливаю для параметра страницы значение +1 (новая страница), загружаю хранилище, и в списке отображаются только новые результаты изновая страница.Можно ли заставить список добавлять новые результаты после загрузки магазина?Так что, когда я загружаю хранилище с новыми данными, я хочу, чтобы список сохранил старые данные и добавил новые.Если это необходимо, я могу показать это в коде, но это в значительной степени самоописывает.Спасибо.

// edit

В настоящее время мой магазин выглядит следующим образом:

realio.stores.results = new Ext.data.Store({
    model: "realio.models.Results",
    proxy: {
        type: 'ajax',
        url: 'http://site.com/json_list2.php?a=l&zp=1&u='+settings["ulica"]+'&c0='+settings["cena0"]+'&c1='+settings["cena1"]+'&p0='+settings["plocha0"]+'0&p1='+settings["plocha1"]+'&cm20='+settings["cenam20"]+'&cm21='+settings["cenam21"]+'&pg=0&s=Datumu&t='+settings["typ"]+'&age='+settings["stari"]+'&pod='+settings["podlazi"]+'&lat='+settings["lat"]+'&lng='+settings["lng"]+'&pp='+settings["pp"]+'&tp0='+settings["typ0"]+'&tp1='+settings["typ1"],
        reader: {
            type: 'json',
            root: 'markers'
        }
    },
    sorters: [
        {
            property: 'id',
            direction: 'ASC'
        }
    ]
});

и моя модель выглядит так:

realio.models.Results = Ext.regModel("realio.models.Results", {
    fields: [
        {name: "titul", type: "string"},
        {name: "vlast", type: "string"},
        {name: "typb", type: "string"},
        ...
    ]
});

список:

xtype: 'list',
store: realio.stores.results,
flex: 1,
disableSelection: true,
scroll: 'vertical',
itemTpl: itemTemplate,
onItemDisclosure: function (record) {
    Ext.dispatch({
        controller: realio.controllers.detail,
        action: 'load',
        detail: record
    });
},
listeners: {
    'itemtap': function(t, i, it, e) {
        Ext.dispatch({
            controller: realio.controllers.detail,
            action: 'load',
            detail: t.store.getAt(i)
        });
     }
},
plugins: [
    {
        ptype: 'listpaging',
        autoPaging: false
    }, 
    {
        ptype: 'pullrefresh'
    }
]

У меня решена подкачка на стороне сервера -> когда я задаю & pg = x в URL-адресе прокси, я перехожу на страницу x, так что я не знаю, как заставить ее работатьс этими страницами магазина.Даже если бы я попытался установить для магазинов размер страницы, например, 2, он все равно показал бы все результаты, поэтому я подумал, что это не работает ...

Ответы [ 2 ]

1 голос
/ 30 апреля 2012

По своему опыту я бы сделал store.loadData (data, true); Значение true, чтобы добавить данные к данным, которые уже есть в списке.

0 голосов
/ 25 августа 2011

Существует плагин, который поставляется с Sencha Touch 1.1, который называется ListPagingPlugin, который позволяет добавить кнопку «Загрузить еще» в конец списка, которая будет извлекать следующую страницу и добавлять данные.Есть пример (также включен), который вы можете найти в / examples / pullrefresh (он связан с плагином pull to refresh в одном примере).

Этот пример не сработал для меня, потому что я думаю, что Twitter изменилсяих API, так что если отправляется неверный параметр страницы, он не по умолчанию равен странице 1, а сообщает, что параметр -some- недействителен.Чтобы пример работал, мне пришлось отредактировать строку 44 файла /examples/pullrefresh/src/TwitterProxy.js с page: operation.page до page: operation.page || 1

Если у вас есть какие-либо вопросы о плагине, особенно после его запускаиспользуя его, мы можем пересечь этот мост, когда вы туда доберетесь = D

...