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 未初始化