我正在尝试使用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,并在状态更改后调用前面的函数。我认为这与要求中包含正确的模块有关,但我并不确定。我花了好几个小时,并尝试了许多不同的方法,包括旧的dojo.connect方式。
非常感谢任何帮助/提示!
答案 0 :(得分: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。