如何在JS代码中订阅dijit事件?

时间:2014-04-10 17:28:25

标签: javascript events dojo

我是Dojo框架的新手,并尝试在语法上为代码中的ComboBox Dijit订阅onChange事件。但由于某种原因,我的事件处理函数无法捕获此事件。你能帮我找出我错在哪里吗?

    <div id="container" style="padding: 5px;">
        <select data-dojo-type="dijit/form/ComboBox"     name="state" id="stateInput">                
            <option>Apples</option>
            <option selected>Oranges</option>
            <option>Pears</option>
        </select>           
    </div>




    require([   'dijit/form/ComboBox',  
        "dojo/on",
        "dijit/registry"    
    ], function(ComboBox, on,registry){
        var comboBoxDigit2 = registry.byId("stateInput");
        on(comboBoxDigit2,"onChange", function (e) {
            alert("I am an alert box!");
    });    
});

Code is here on jsfiddle.

谢谢,

1 个答案:

答案 0 :(得分:2)

此代码中存在一些错误。

  1. 要求传递数组以相同的顺序运行。您目前正在通过&#34; dojo / on&#34;和&#34; dijit / registry&#34;进入ComboBox,on和注册表。您需要要求&#34; dijit / form / ComboBox&#34;

  2. data-dojo-type的格式应该是路径,即data-dojo-type="dijit/form/ComboBox"

  3. 开启的格式通常为on(element, eventname, function),但我相信您可以按照自己的方式进行。

  4. 编辑:

    关于事件的工作,即

    on(combobox, "change", function(value) {...});
    

    你原来的小提琴没有被解析为dijit,它只是一个简单的html选择,所以对注册表的调用失败了。我已经更新了小提琴。 http://jsfiddle.net/vdmhU/13/