【问题标题】:Dojo Toolkit 1.8.3 Mobile dojo/on Handler Event Switch WidgetDojo Toolkit 1.8.3 Mobile dojo/on Handler Event Switch Widget
【发布时间】:2013-03-26 15:55:36
【问题描述】:

我正在尝试使用 onStateChanged 事件为 dojox.mobile.Switch 小部件创建一个基本事件处理程序。我正在使用针对新 AMD 架构的 dojo/on 事件处理程序模块,并且很难让它监听我的 switch 事件。

这是 id=mobileView 的开关小部件的 HTML

    <li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="icon:'../../app/images/i-      icon-1.png'">
      Mobile Version
    <div id="mobileView" class="mblItemSwitch" data-dojo-type="dojox.mobile.Switch"></div>
    </li>

这里是JS代码代码。第二个要求是假设处理切换事件。

    require(["dojox/mobile/parser", "dojox/mobile", "dojox/mobile/deviceTheme","dojox/mobile/compat", "dojo/domReady!"],
    function(parser) {
    parser.parse();
    });

    require(["dojo/on", "dijit/dijit"], 
    function(on){
    on(dijit.byId("mobileView"), 
    "onStateChanged", 
    function(newState){
    alert(newState);
    });
    });
    </script>

我可以看到它正在使用 dijit.byId 将自身绑定到小部件,监听 onStateChanged 事件,并在状态更改时调用前面的函数。我认为这与在 require 中包含正确的模块有关,但是我不确定。我为此花费了数小时,并尝试了许多不同的方法,包括 dojo.connect 的旧方法。

任何帮助/提示将不胜感激!

Reference: dojo/on Dojo Toolkit dojo/on

【问题讨论】:

    标签: javascript html events mobile dojo


    【解决方案1】:

    在旧版本的 dojo 中,dojo.connect() 处理 DOM 事件(单击、聚焦等)和小部件上的函数调用。

    但是,较新的 dojo/on 模块处理 DOM 事件,而 dojo/aspect 模块处理函数调用。 Switch.onStateChanged() 是一个函数,而不是 DOM 事件,所以你想要这样的东西:

    require(["dojo/aspect", "dijit/registry"], function(aspect, registry) {
         aspect.after(registry.byId("mobileView"), "onStateChanged", 
           function(newState){
             alert(newState);
           }
         );
    });
    

    请参阅http://dojotoolkit.org/reference-guide/1.8/dojo/connect.html 了解更多信息。

    【讨论】:

    • 有道理!感谢您的快速响应、代码 sn-p 和参考链接!这就像我想要的那样工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多