Sencha touch 重新加载传送带项目

Sencha touch 重新加载传送带项目,sencha-touch,carousel,Sencha Touch,Carousel,我需要从旋转木马中重新加载项目(我单击了一个项目,一个面板被破坏,然后当我尝试返回时,我需要重建旋转木马) 为此,我将通过以下操作移除旋转木马的项目: var len = cards.length; for(var c = 0; c < len;c++) this.myCarousel[0].items.remove(cards[0]); 但这样做之后,卡不会被正确设置,它们只是被写在彼此的上面,没有旋转效果。此外,卡片开始在转盘的工具栏下绘制,而不是从工具栏下开始绘制 当我第一次加载卡

我需要从旋转木马中重新加载项目(我单击了一个项目,一个面板被破坏,然后当我尝试返回时,我需要重建旋转木马)

为此,我将通过以下操作移除旋转木马的项目:

var len = cards.length;
for(var c = 0; c < len;c++)
this.myCarousel[0].items.remove(cards[0]);
但这样做之后,卡不会被正确设置,它们只是被写在彼此的上面,没有旋转效果。此外,卡片开始在转盘的工具栏下绘制,而不是从工具栏下开始绘制

当我第一次加载卡片时,它工作得很好(当我从头开始构建旋转木马时),但是如果我删除以前的卡片并再次添加它们,它们将无法正确显示,我希望有人能帮助我


提前感谢您

在旋转木马上添加和删除,因为它有这样做的方法:

this.myCarousel.removeAll();
var items = [];
for (...) {
   items.push(<item def>);
}
this.myCarousel.add(items);
this.carousel.doLayout(); // Force the carousel to re-render
this.myCarousel.scrollToCard(0); // This will send the user back to the first card

您必须使用索引,因为该项将被删除

在传送带本身上添加和删除,因为它有这样做的方法:

this.myCarousel.removeAll();
var items = [];
for (...) {
   items.push(<item def>);
}
this.myCarousel.add(items);
this.carousel.doLayout(); // Force the carousel to re-render
this.myCarousel.scrollToCard(0); // This will send the user back to the first card

您必须使用索引,因为该项将被删除

id应仅用于调试。有比使用id更好的解决组件问题的方法。id只能用于调试。有比使用id更好的解决组件问题的方法,这会给您带来麻烦。

它说myCarousel没有任何称为removeAll或doLayout的功能。请注意,我必须将myCarousel视为一个对象数组,但即使我这样做了。myCarousel[0]。doLayout()或removeAll()表示myCarousel[0]没有这些函数Carousel有removeAll和doLayout(请查看API参考)。听起来您没有对渲染旋转木马的引用,只有初始配置对象。您需要渲染旋转木马,然后获取该引用。你可以用很多方法来实现这一点,但是你可以使用afterender侦听器来获取渲染的旋转木马。我知道旋转木马应该有这些功能,但我不明白为什么我不能调用它们。旋转木马现在工作正常。物品。移除(卡片[i])毕竟有效。但我还是得称之为我的旋转木马[0]。谢谢你的帮助。你没有它们,因为你没有呈现对象,只有配置对象。config对象将拥有这些项(这就是为什么您可以进行项操作),但不会作为完整对象实例化。将其传递给渲染函数时,将创建旋转木马对象。您可以在该对象上使用所有适当的函数。虽然这似乎是为旋转木马生成新项目,但它们不会呈现。旋转木马中的“点”反映了正确的项目数量,但它们不呈现——只呈现初始加载。它表示myCarousel没有任何称为removeAll或doLayout的功能。请注意,我必须将myCarousel视为一个对象数组,但即使我这样做了。myCarousel[0]。doLayout()或removeAll()表示myCarousel[0]没有这些函数Carousel有removeAll和doLayout(请查看API参考)。听起来您没有对渲染旋转木马的引用,只有初始配置对象。您需要渲染旋转木马,然后获取该引用。你可以用很多方法来实现这一点,但是你可以使用afterender侦听器来获取渲染的旋转木马。我知道旋转木马应该有这些功能,但我不明白为什么我不能调用它们。旋转木马现在工作正常。物品。移除(卡片[i])毕竟有效。但我还是得称之为我的旋转木马[0]。谢谢你的帮助。你没有它们,因为你没有呈现对象,只有配置对象。config对象将拥有这些项(这就是为什么您可以进行项操作),但不会作为完整对象实例化。将其传递给渲染函数时,将创建旋转木马对象。您可以在该对象上使用所有适当的函数。虽然这似乎是为旋转木马生成新项目,但它们不会呈现。旋转木马中的“点”反映了正确的项目数量,但它们不会渲染——只有初始加载渲染。我发现我遇到的问题是由某种原因造成的,视图在其他地方被破坏,这就是旋转木马无法工作的原因。但是我仍然很好奇为什么我不能把这个叫做.myCarousel.removeAll()或者这个.myCarousel.doLayout();可能是因为我这样做是为了添加旋转木马。add(this.myCarousel),而不是在创建视图时直接将旋转木马作为一个项目添加。我发现我遇到的问题是由某种原因造成的,视图在其他地方被破坏,这就是旋转木马无法工作的原因。但是我仍然很好奇为什么我不能把这个叫做.myCarousel.removeAll()或者这个.myCarousel.doLayout();也许这是因为我正在通过执行this.add(this.myCarousel)添加旋转木马,而不是在创建视图时直接将旋转木马作为项目添加。
var curIndex = this.myCarousel.items.items.indexOf(this.myCarousel.layout.activeItem);
// Now do removing and adding
this.myCarousel.scrollToCard(this.myCarousel.items.items[curIndex]);