Предметы в Sencha Touch исчезают из карусели - PullRequest
0 голосов
/ 24 марта 2011

Я сейчас создаю приложение, используя Sencha Touch.У нас есть определенная Карусель на странице, которая содержит несколько элементов.При нажатии кнопки на другой панели определенные элементы добавляются и удаляются на панель.

Проблема : все работает, как и планировалось для первого нажатия , нопри нажатии снова на ту же кнопку функциональность перестает работать, и дисплей карусели становится пустым, и ни один из элементов не виден.

Ниже представлен обработчик для кнопок , которые изменяют содержимое карусели itemsCarousel.Функция добавляет itemPanels[ b.getBadgeText() ] к элементам itemsCarousel.Для первых четырех щелчков или около того, это прекрасно работает.Через некоторое время, когда я нажимаю кнопку, все элементы в Карусели исчезают, и я не могу добавлять или удалять больше контента, даже вызывая Карусель вручную из консоли.

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

Вещи, которые я пытался:

  • Изменение порядка путем вставки элемента в слот 0, установки 0 active, а затем удаления 1.
  • Установка точек останова javascript на каждой из строкВидя, где карусель гаснет.Иногда это происходит в операторе .insert(), иногда в .remove().
  • Все это выполняется вручную из консоли.
  • Настройка параметра autoDestroy в вызове .remove()(как видно выше) и в объявлении itemsCarousel.

Если вам нужно больше кода, я могу опубликовать все, что вы считаете актуальным, я не хотел загрязнять этот поток избыточным кодом,Спасибо за вашу помощь!

Редактировать: Если кто-то знает другой способ воспроизведения той же функциональности, я также открыт для этого.Я думаю, возможно, создание контейнера-пустышки с одним элементом, каруселью, удаление всей карусели и повторное добавление нового (с новыми элементами) одного при нажатии кнопки?

1 Ответ

0 голосов
/ 29 марта 2011

Ну, я разобрался, как воспроизвести функциональность, используя другой метод.

Я построил несколько каруселей, каждая из которых содержала нужные мне панели, а затем имела корневую панель, которая просто устанавливает активную карусель на основе нажатия кнопок. Например, теперь иерархия выглядит так:

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

и я выполняю rootPanel.setActiveItem(x), чтобы отобразить новую карусель.

...