Dojo onBeforeTransitionIn 未触发
Posted
技术标签:
【中文标题】Dojo onBeforeTransitionIn 未触发【英文标题】:Dojo onBeforeTransitionIn not firing 【发布时间】:2013-12-18 08:39:58 【问题描述】:我对 Dojo 移动视图 (TweetViews) 中的转换事件有疑问。我想对视图更改执行操作(例如动态加载内容)。到目前为止,我已经尝试了以下方法:
on(document.getElementById("add"),"onBeforeTransitionIn", function()
console.log("test");
);
onAfterTransitionIn
、onBeforeTransitionOut
和 onAfterTransitionOut
也不起作用。
我怎样才能让它工作?
【问题讨论】:
【参考方案1】: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/。
【讨论】:
【参考方案2】:由于移动视图是一个小部件,您应该尝试在小部件而不是 DOM 节点上注册您的事件。示例:
on(registry.byId("add"), "onBeforeTransitionIn", ...)
注册表引用http://dojotoolkit.org/reference-guide/1.9/dijit/registry.html
【讨论】:
已经试过了,还是没有效果:/。像“点击”这样的事件起作用了,所以它可能与转换有关。以上是关于Dojo onBeforeTransitionIn 未触发的主要内容,如果未能解决你的问题,请参考以下文章
Dojo dojo.rawXhrPost 和 dojo.xhrPost
dojo的ready函数:dojo.ready(以前的dojo.addOnLoad)
如何将 dojo (dojo 0.x) FilteringTable 迁移到 (dojo 1.6) 中的 DataGrid?