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