Dojo onBeforeTransitionIn not firing

Dojo onBeforeTransitionIn not firing

本文关键字:firing not onBeforeTransitionIn Dojo      更新时间:2023-09-26

我在Dojo移动视图(TweetViews)中遇到转换事件问题。我想对视图更改执行操作(比如动态加载内容)。到目前为止,我已经尝试了以下几种:

on(document.getElementById("add"),"onBeforeTransitionIn", function(){
    console.log("test");
});

onAfterTransitionInonBeforeTransitionOutonAfterTransitionOut也不起作用。

我怎样才能让它工作?

Dojo将小部件(如dojox/mobile视图)与DOM节点(如使用document.getElementById()获得的节点)分离。这意味着您不能像实际尝试的那样,在普通DOM节点上使用onBeforeTransitionIn事件处理程序

幸运的是,小部件从DOM节点调整了它们的ID,所以它应该仍然是"add"。要通过ID检索小部件,您可以使用:

var myView = registry.byId("add");

dojo/on模块应仅与DOM事件一起使用。实际上,您可能会让它与自定义小部件事件一起工作,但我认为这不是处理这些事件的正确方式。通常您应该使用小部件on()功能,例如:

myView.on("beforeTransitionIn", function() {
    // Do something
});

还要注意,您在事件名称前面省略了"on"部分。您还可以使用dojo/on模块来实现这一点,因此记住这一点以备将来使用可能会很有趣。

我还制作了一个小的JSFiddle来演示事件处理,您可以在这里找到:http://jsfiddle.net/g00glen00b/qct3L/.

由于移动视图是一个小部件,您应该尝试在小部件而不是DOM节点上注册事件。示例:

on(registry.byId("add"), "onBeforeTransitionIn", ...)

注册表引用http://dojotoolkit.org/reference-guide/1.9/dijit/registry.html