交换 dojox.mobile.Carousel 小部件时处理事件
Posted
技术标签:
【中文标题】交换 dojox.mobile.Carousel 小部件时处理事件【英文标题】:Handling the event when a dojox.mobile.Carousel widget is swapped 【发布时间】:2012-12-20 14:29:25 【问题描述】:dojo 移动文档为您提供了一种在用户“选择”轮播项目时侦听 ant 事件的方法:http://dojotoolkit.org/reference-guide/1.8/dojox/mobile/Carousel.html#handling-the-event-when-a-carousel-item-is-selected
但我需要在转换时执行操作。有办法处理吗?
还有什么地方我可以找到小部件的所有“可处理事件”?
【问题讨论】:
【参考方案1】:正如您在API Doc 中看到的那样,实现了一些event
s。不幸的是,它们似乎都不符合您的确切要求。
似乎只有onNextBtnClick(e)
和onPrevBtnClick(e)
朝着您的方向前进。
还有一个handleViewChanged(view)
-方法,但我认为这不是指Carousel
本身,而是指它所呈现的设备(比如从纵向模式到横向模式等等)。但由于它没有很深入的记录,我无法确切地说出它的用途。
【讨论】:
【参考方案2】:您可以订阅在任何视图转换到时发出的 Dojo 主题“/dojox/mobile/viewChanged”,并检查该视图是否是 Carousel 的子视图,如下所示:
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。
【讨论】:
【参考方案3】:在了解了有关 Dojo 的更多信息后,我意识到我没有正确处理这个问题。
创建一个继承自 carousel 的新模块。那么您需要做的就是覆盖handleViewChanged 方法(确保调用this.inherited),然后在其中执行操作。
【讨论】:
以上是关于交换 dojox.mobile.Carousel 小部件时处理事件的主要内容,如果未能解决你的问题,请参考以下文章