gpt4 book ai didi

javascript - Dijit 1.7+ 小部件 : how to separate event logic from the present

转载 作者:行者123 更新时间:2023-12-02 19:39:23 25 4
gpt4 key购买 nike

基本上有两种使用 Dijit 创建小部件实例的方法:声明式和编程式。我想要的是两者的混合:使用声明性方法设置 iconClass 等 Prop ,但将事件处理留给外部脚本 block 。

我尝试直接使用 dojo/on 添加事件逻辑,但没有成功。我使用 dojo/dom.byId()dijit/registery.byId() 检索了小部件,但两者都不起作用。所以我的解决方案是将事件 Prop 链接到全局函数,如下所示:

<body class="claro">
<script type="text/javascript">
require([
"dojo/dom",
"dojo/on",
"dijit/registry",
"dijit/form/Button",
"dojo/parser",
"dojo/domReady!"
], function (dom, on, registry) {
// both don't work
// on(dom.byId("btn1"), "click", function () {alert("hi");});
// on(registry.byId("btn1"), "click", function () {alert("hi");});

// this one works
btnClickListener = function(){alert("hi")};
});
// the global function
var btnClickListener;
</script>

<button id="btn1" data-dojo-type="dijit.form.Button"
data-dojo-props="iconClass: 'dijitIconNewTask', showLabel:false">
</button>
<button id="btn2" data-dojo-type="dijit.form.Button"
data-dojo-props="iconClass: 'dijitIconNewTask', showLabel:false, onClick:btnClickListener">
</button>

</body>

还有更好的解决办法吗?

最佳答案

dojo/on 可以工作,但是您的 registry.byId("btn1") 返回 undefined,因为在您的代码被执行时执行的 dijit 尚未实例化。将您的代码包装到 dojo/ready 中,如您在 jsFiddle 中看到的:http://jsfiddle.net/phusick/tRSqC/

关于javascript - Dijit 1.7+ 小部件 : how to separate event logic from the present,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com