Dojo をいじり始めたところです。Dijit ComboButton の DropDownMenu の項目がクリックされたときにダイアログを表示したかっただけです。dojo.connect を使用して、onclick イベントを関数に関連付けてみました。この関数は、アイテムに含まれるテキストを含むダイアログを表示するだけでしたが、うまくいきませんでした。
私は恐ろしい方法でそれを機能させることができました。すべての作業は、実際には手動で onclick 属性に書き込まれます。私は明らかにここで何かを誤解しています。これは私が現在持っているものです:
JS:
require(["dijit/form/Button", "dijit/form/FilteringSelect", "dijit/DropDownMenu", "dijit/MenuItem"]);
//if the following is defined inside dojo.ready, nothing happens
function getmail(text)
{
alert('No mail from '+text);
}
dojo.ready(function(){
//the following does nothing:
dojo.connect(dojo.query(".dijitMenuItemLabel"), "onclick", function(evt) {
console.log("mail item clicked");
alert('Blah');
//dojo.stopEvent(evt);
});
});
HTML:
<form method="POST">
<div data-dojo-type="dijit.form.ComboButton" id="getmail">
<span>Get All Mail</span>
<div data-dojo-type="dijit.DropDownMenu">
<div data-dojo-type="dijit.MenuItem"
data-dojo-props="onClick:function(){getmail(dojo.trim(dojo.query('.dijitMenuItemLabel', this.domNode)[0].innerHTML))}">
Yahoo</div>
<div data-dojo-type="dijit.MenuItem">Google</div>
</div>
</div>
</form>
私が Dojo について明らかに誤解しているように見えるのは何ですか?
(または、単純な JavaScript の間違いを犯している可能性があります)