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

How to subscribe an dijit event in the JS code?

本文关键字:dijit 事件 代码 JS      更新时间:2023-09-26

我是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!");
    });    
});

代码在jsfiddle上。

谢谢,

Wei

这段代码中有一些错误。

  1. require按相同的顺序传递数组。您当前正在将"dojo/on"answers"dijit/registrate"传递到ComboBox、on和registry中。您需要"dijit/form/Compobox"

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

  3. on的格式通常是on(element, eventname, function),尽管我相信你可以按照你现在的方式来做

编辑:

关于活动的工作ie

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

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