1
我读过这篇文章(Using dojo.behavior),并且想要在我的项目中使用behavior模块作为事件处理模块。如何在dojo小部件上使用dojo /行为?
但我有一个问题,对于DOM节点来说,它的工作很棒,但我怎么能在Dojo小部件上使用它呢?
如果我使用道场/模块上,我能做到这样的:
var buttonNode = dijit.byId("myButton");
on(buttonNode, "onClick", buttonHandler);
或
dijit.byId("myButton").onClick = buttonHandler;
但是,如果我用行为模块,
behavior.add({
"#myButton": {
onClick: buttonHandler
}
});
它不起作用。 (当然,在完成页面渲染后,我调用了behavior.apply()。) 下面的代码也不起作用。
behavior.add({
"[widgetid='myButton']": {
onClick: buttonHandler
}
});
经过一番调查,我发现上面的代码不工作的原因是因为按钮小部件由许多s和内部组成。如果我使用由data-dojo-id指定的id,它将指向一个,而不是我希望事件绑定的那个。
我发现了一个解决方案,它能够走出这种情况,
behavior.add({
"[widgetid='myButton'] input": {
onclick: buttonHandler
}
}
但CSS选择器太复杂,这取决于部件是什么类型。
是否有一个很好的解决方案,就像在DOM节点上应用dojo /行为的小部件?
是的。你所说的正是我面临的问题。你有什么好的解决方案? – Programus 2012-10-19 04:35:49