sencha touch carousel 不删除所有项目

Posted

技术标签:

【中文标题】sencha touch carousel 不删除所有项目【英文标题】:sencha touch carousel not removing all items 【发布时间】:2013-12-15 15:39:32 【问题描述】:

对此感到困惑,不知道从哪里开始。

我有一个轮播,当我的后备存储上触发刷新事件时会加载它:

    Ext.define('Rb.store.Items', 
        extend: 'Ext.data.Store',
        requires: ['Rb.model.Item', 'Ext.data.proxy.Rest'],
        config: 
            storeId: 'itemstore',
            model: 'Rb.model.Item',
            proxy: 
               type: 'rest',
               url: '',
               reader: 
                   type: 'json',
                   rootProperty: 'items'
               
            ,
            autoLoad: false,
            listeners:
                refresh: function( me, data, eOpts )
                    console.log("refresh");
                    var carousel = Ext.ComponentQuery.query('rbdetailcarousel')[0];
                    carousel.removeAll(true);
                    console.log(carousel.getItems().getCount());
                    data.each(function(rec)
                        console.log(rec.data);
                        var rdcp = Ext.create('Rb.view.RbDetailCarouselPanel',
                                                         cur_item: rec.data,
                                                         style: 'background-image:url(resources/startup/320x460.jpg);background-repeat:no-repeat;',
                                                     );
                        rdcp.items.get(1).sethtml(rec.data.name);
                        carousel.setActiveItem(rdcp);

                    );

                    carousel.setActiveItem(0);
                
            
        
    );

我的轮播超级简单:

    Ext.define('Rb.view.RbDetailCarousel', 
        extend: 'Ext.Carousel',
        xtype: 'rbdetailcarousel',
        config: 
            itemId: 'rbdetailcarousel',
        
    );

这里发生了两件奇怪的事情:

    当我调用 carousel.getItems().getCount() 时,在 carousel.removeAll(true) 之后,我总是得到一个返回值 1。如果我检查轮播,还剩下一项在轮播中(看起来像是指示器??)。

    当我重新加载商店时,它会清除所有项目除了第一个项目,因此当我越来越多地刷新时,我会重复第一个项目,然后是其余项目添加到最后。似乎 removeAll(true) 没有删除第一项。

有什么想法可以解决这个问题吗?我怀疑我没有正确获取对轮播的引用,因为我不应该将指示器作为其中的一项来取回,对吧?

谢谢

【问题讨论】:

这一行是什么意思? rdcp.items.get(1).setHtml(rec.data.name); @ThiemNguyen - 该行仅设置 rdcp 元素中包含的面板的 html。它使用当前记录中的“名称”字段来执行此操作。 不确定错误是否真的在这里。你能发个小提琴让我帮忙吗? fiddle.sencha.com 嗨 - 很抱歉,我花了这么长时间才回复你,但我在让我的应用程序启动时遇到了一些实际问题。我可以让它运行,但是会抛出一些我看不到的错误,而且显然没有该设施的文档。这是我到目前为止所拥有的:fiddle.sencha.com/#fiddle/2ad。如果您对我如何获得小提琴文档有任何建议,那可能会有所帮助。我还不能重现上面的错误,因为发生了其他我无法在本地重现的错误。再次感谢 更新:好的,我确实设法让它在小提琴上运行:fiddle.sencha.com/#fiddle/2ad。如果您单击列表项,它将带您到轮播。如果您返回,然后再次单击列表项,则轮播会充满更多项。这说明了问题。谢谢 【参考方案1】:

正如 OhmzTech 所暗示并在 sencha 论坛上回答的那样,我正在向我的轮播添加具有重复 itemId 的项目。我对这些 id 的地位(以及框架内部使用它们的程度)仍然有点模糊,显然你不希望有一个带有重复子项 itemId 的容器。

【讨论】:

以上是关于sencha touch carousel 不删除所有项目的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch 2 Carousel:开始/结束页面的锁定滑动

Sencha Touch 2.2.1 Carousel 未初始化

来自 JSON 商店的 Sencha Touch Carousel

Sencha Touch轮播图像问题

Sencha Touch 2 - 选项卡式面板中的轮播

Sencha Touch `directionLock` - 我哪里出错了?