Обработка события при замене виджета dojox.mobile.Carousel

Мобильная документация dojo дает вам возможность прослушивать событие ant, когда пользователь «выбирает» элемент карусели: http://dojotoolkit.org/reference-guide/1.8/dojox/mobile/Carousel.html#обработка-события-при-выборе-элемента-карусели

Но мне нужно сделать действие, когда оно перешло. есть ли способ справиться с этим?

Также есть ли где-нибудь, где я могу найти все «обрабатываемые события» для виджета?


person dovidweisz    schedule 20.12.2012    source источник


Ответы (3)


Как вы можете прочитать в документе по API, реализовано несколько event. К сожалению, ни один из них не соответствует вашим точным требованиям.

Только onNextBtnClick(e) и onPrevBtnClick(e) идут в вашем направлении.

Существует также handleViewChanged(view)-метод, но я не думаю, что это относится не к самому Carousel, а к устройству, на котором оно представлено (например, переход из портретного режима в ландшафтный режим или что-то в этом роде). Но поскольку он не очень глубоко задокументирован, я не могу точно сказать, для чего он нужен.

person nozzleman    schedule 21.12.2012

Вы можете подписаться на тему Dojo "/dojox/mobile/viewChanged", которая создается при переходе к любому представлению, и проверить, является ли представление дочерним элементом вашей карусели, например:

require(["dojo/topic"], function(topic){
    topic.subscribe("/dojox/mobile/viewChanged", function(view){
        if(view.getParent() === myCarousel){
            // a new view inside my carousel has been transitioned to
            ...
        }
    });
});

С другой стороны, вы можете подключиться к методу handleViewChanged, поскольку Carousel подписывается на «/dojox/mobile/viewChanged» внутри и вызывает handleViewChanged.

person edurocher    schedule 07.01.2013

Узнав больше о Додзё, я понял, что неправильно к этому подошел.

Создайте новый модуль, наследуемый от carousel. тогда все, что вам нужно сделать, это переопределить метод handleViewChanged (не забудьте вызвать this.inherited), а затем сделать что-то прямо там.

person dovidweisz    schedule 23.05.2014