在定义要由 JSP 标记引用的单独 javascript 模块时,我正在尝试遵循最新的 Dojo1.9 最佳 AMD 实践。我曾经在同一个 JSP 文件 MyJayEsspEe.jsp 中有一个大的 javascript 部分,其中 javascript 部分定义了由各种元素 onClick 属性调用的函数。现在,我使用 Dojo 定义机制将 javascript 分离到一个名为 MyCallbacks.js 的新文件中。
MyCallbacks.js 的格式如下:
define(["dojo/dom", "dojo/dom-style", "dojo/has", "dijit/registry", "dojo/on"],
function (dom, domStyle, dojoHas, registry, on) {
...
function clickedOnButton1() {
console.log("Clicked on button1");
}
function clickedOnLinkTwo() {
console.log("Clicked on second link");
}
...
return {
clickedOnButton1: clickedOnButton1,
clickedOnLinkTwo: clickedOnLinkTwo
}
});
在 MyJayEsspEe.jsp 文件中,我目前正在使用丑陋的标记,其中包括:
...
<button data-dojo-type="dijit/form/Button" type="button" onclick="require(['commonjs/MyCallbacks'], function(mycallbacks) {mycallbacks.clickedOnButton1();});">First Button</button>
<a id="testLinkId" href="#" onclick="require(['commonjs/MyCallbacks'], function(mycallbacks) {mycallbacks.clickedOnLinkTwo();});">Link Two</a>
...
但我希望有一种方法来定义模块并要求它,以便在标记中我可以有更清晰的回调,如下所示:
...
<button data-dojo-type="dijit/form/Button" type="button" onclick="mycallbacks.clickedOnButton1();">First Button</button>
<a id="testLinkId" href="#" onclick="mycallbacks.clickedOnLinkTwo();">Link Two</a>
...
我一直在查看定义模块和回调的 Dojo 参考文档,但到目前为止还没有找到指向我正在寻找的干净解决方案的指针。有比我一直使用的更清洁的解决方案吗?
谢谢你的时间,格雷戈尔