Dojo onBeforeTransitionIn不发射

时间:2013-12-18 08:39:59

标签: javascript dojo dojox.mobile

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

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

onAfterTransitionInonBeforeTransitionOutonAfterTransitionOut也不起作用。

我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:1)

Dojo从DOM节点(例如dojox/mobile获得的小部件)分隔小部件(如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/

答案 1 :(得分:0)

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

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

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