extjs - 在 Ext.DataView 中显示存储的有限子集(或单个记录)

标签 extjs sencha-touch

在 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/

相关文章:

javascript - 使用 ExtJS 的 CORS 返回错误 405(方法不允许)

ExtJs-使用列标题中的搜索字段过滤网格

php - ExtJS 网格的 MySQL UNION ALL - 需要唯一的 id 列

javascript - ListView 项目点击上的 Sencha 弹出菜单

javascript - 处理 openlayers mobile 标记的点击事件

javascript - ExtJS 经典 - 将图表插入工具提示

ExtJS4:如何在文本框、组合框等旁边显示验证错误消息

javascript - Sencha touch 重置存储启动参数

javascript - Sencha Touch TPL 和 ITEM

javascript - Sencha touch重绘面板