2011-08-24 79 views
1

我有一个简单的列表,从JSON商店加载数据。我已经将分页解析为服务器端,因此为了获得新页面,我更改了商店的代理并将页面参数设置为+1(新页面),加载商店,并且列表仅显示来自新一页。 是否有可能使该列表在商店加载后追加新的结果?因此,当我用新数据加载商店时,我希望列表保留旧数据并添加新数据。 如果需要的话,我可以在代码中展示它,但它非常自我描述。 谢谢。Sencha触摸列表追加商店加载新结果

//编辑

目前我店里是这样的:

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时,我转到页面x,所以我不知道如何让它与这些商店页面一起运行。即使我试图设置商店页面大小为例如2,它会显示所有结果无论如何,所以我认为它不工作...

回答

0

有一个插件与Sencha Touch 1.1一起调用ListPagingPlugin,它可以让你添加一个'加载更多“按钮到列表的末尾,将读取下一页并追加数据。有一个例子(也包括),你可以在/ examples/pullrefresh中找到它(它与一个示例中的拉动刷新插件捆绑在一起)。

这个例子并不适用于我,因为我认为Twitter更改了它们的API,因此如果发送无效的页面参数,它不会默认为页面1,而是告诉您 - 某些参数无效。为了让这个例子的工作,我不得不编辑/examples/pullrefresh/src/TwitterProxy.js线44 page: operation.pagepage: operation.page || 1

如果您有关于该插件的任何问题,你开始使用它,我们可以跨越特异性后当你到达那里的桥= D

+0

嗨,我现在检查它,我之前检查过,但listpagingplugin正在与商店页面。我现在不是真的如何让他们工作。拉刷新的例子是相当混乱的叽叽喳喳代理我不认为我需要做这么复杂的代理,我会用一些代码编辑主消息。 – haluzak

+0

再次看看TwitterProxy,你可以看到如何使用'Ext.apply'应用自定义参数(在pullrefresh示例中,他们在'buildRequest'中设置了2个自定义参数'rpp'和'page')做同样的事情,但你的参数将是'pg' – chrixian

+0

@haluzak:你有任何进展。我在这里完全相同的情况,并不能完全弄清楚Twitter的例子。 – keune

1

从我的经验,我会做store.loadData(data,true);如果将数据附加到列表中已有的数据,则为true。