0

現在、SenchaTouchを使用してアプリケーションを構築しています。複数のアイテムを含むページに特定のカルーセルがあります。別のパネルのボタンをクリックすると、特定のアイテムがパネルに追加および削除されます。

問題:すべてが最初のクリックで計画どおりに機能しますが、同じボタンをもう一度クリックすると、機能が機能しなくなり、カルーセルディスプレイが空白になり、アイテムが表示されなくなります。

以下は、カルーセルの内容を変更するボタンのハンドラーですitemsCarousel。関数はの項目に追加itemPanels[ b.getBadgeText() ]itemsCarouselます。最初の4回のクリック程度では、これはうまく機能します。その後、ボタンをクリックすると、カルーセル内のすべてのアイテムが消え、コンソールから手動でカルーセルを呼び出しても、コンテンツを追加または削除できなくなります。

handler: function(b, e) {
    itemsCarousel.insert(1, itemPanels[ b.getBadgeText() ]);
    itemsCarousel.doLayout(); itemsCarousel.doComponentLayout();
    itemsCarousel.setActiveItem(1);
    itemsCarousel.remove(0, false);
}

私が試みたこと:

  • スロットにアイテムを挿入し、アクティブに0設定してから削除することにより、順序を変更します。01
  • 各行にjavascriptブレークポイントを設定し、カルーセルが空白になる場所を確認します。時々それは.insert()声明で、時には。で発生し.remove()ます。
  • これらすべてをコンソールから手動で実行します。
  • 呼び出し(上記のように)およびの宣言でautoDestroyパラメーターを微調整します。.remove()itemsCarousel

より多くのコードが必要な場合は、関連すると思われるものを投稿できますが、このスレッドを余分なコードで汚染したくありませんでした。ご協力いただきありがとうございます!

編集:誰かが同じ機能を再現する別の方法を知っているなら、私もそれを受け入れます。おそらく、1つのアイテムであるカルーセルを含むダミーホルダーコンテナを作成し、カルーセル全体を削除して、ボタンをクリックするだけで新しい(新しいアイテムを含む)1つを再度追加することを考えていますか?

4

1 に答える 1

0

さて、別の方法で機能を再現する方法を見つけました。

複数のカルーセルを作成し、それぞれに必要なパネルが含まれていました。次に、ボタンの押下に基づいてアクティブなカルーセルを設定するだけのルートパネルを作成しました。たとえば、階層は次のようになります。

rootPanel
{
    carousel[0]
    {
        panel1
        panel2
    }
    carousel[1]
    {
        panel3
        panel4
    }
    ...
}

そして私rootPanel.setActiveItem(x)は新しいカルーセルを展示するために演奏します。

于 2011-03-28T23:42:35.190 に答える