在 Sencha Touch 中,我经常需要有一个 Ext.DataView 面板,其中包含一个小的子集记录,甚至是商店中集合的单个记录。
例如,我可能有一个 Car
的模型其中有数千条汽车记录 app.stores.cars
商店,但我想在我的 listOfSportsCars DataView
中显示这些项目的较小子集(例如;只是跑车)同时还在我的 listOfCars DataView
中展示了更大的全套汽车.
我的 第一 想法是使用多个商店。因此,我将有一个主要商店用于存放所有汽车的大列表,而第二个商店则为我的跑车子集提供过滤器。但是,现在从一个存储更新模型不会自动更新另一个存储中的记录,因此这违背了使用 DataView 的目的,因为更新记录时页面中的所有更改都不会更新。
我的 第二个试图覆盖 collectData
DataView 上的方法,这听起来与我所追求的完全一样:
var card = new Ext.DataView({
store: app.stores.cars,
collectData: function(records, startIndex){
// map over the records and collect just the ones we want
var r = [];
for( var i=0; i<records.length; i++ )
if( records[i].data.is_sports_car )
r.push( this.prepareData(records[i].data, 0, records[i]) );
return r;
},
tpl: new Ext.XTemplate([
'<tpl for=".">',
'<div class="car">{name}</div>',
'</tpl>'
]),
itemSelector: 'div.car'
});
一个完整的例子可以在 here 中找到.
但是,尽管记录表明我可以/应该覆盖此方法,但 Sencha Touch 确实不喜欢在处理 collectData 返回的数组长度时使用它,因此这是一个死胡同。
其他人如何处理显示/更新相同记录的多个集合?
更新 有一个错误阻止
collectData
从按预期工作。此错误已在 Sencha Touch 1.1.0 中修复。
最佳答案
正如评论中所写:
我在上一个 Sencha Touch 版本中使用了您的演示代码,并使用 Google Chrome 打开了所有演示代码。在当前版本中,错误已修复。 (版本 1.1)
关于extjs - 在 Ext.DataView 中显示存储的有限子集(或单个记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5449370/