我是DOJO 1.8的新手,想知道如何在require-method之外调用函数?我尝试实现一个淡入淡出的消息框。
我创建了方法:
require(["dojo/dom", "dojo/on", "dojo/domReady!" ], function(dom, on, ready) {
/*function which shows a msg-box on top of the page */
var showMsg = function(text) {
dom.byId("msgbox").innerHTML = text;
}
});
OK!它的工作原理......但是我不想在应用程序的其他地方调用它:
showMsg("Item saved");
但这不起作用:未捕获的ReferenceError:未定义showMsg
我如何获得该参考?
感谢您的帮助!
AFX
答案 0 :(得分:0)
就目前情况而言,你正在声明一个局部变量,因此在程序的其他地方看不到它。
您可以将变量设为全局变量,例如
window.showMsg = function(text) {
dom.byId("msgbox").innerHTML = text;
}
这种方法的缺点是,随着应用程序变得越来越大,最终会出现越来越多的全局变量,这会使维护变得更加困难。
因此,Dojo提供了打包可重用代码块的方法并引用它们。当您使用“require”时,您已经在利用其中的一些功能 - 您可以访问dojo块。您可以以相同的方式将自己的代码显示为可重用的块。
这是一个非常大的话题,但您可以先阅读this
答案 1 :(得分:0)
您可以做的另一件事是在函数内移动require。
即使你有许多这样的功能,虽然重复很烦人,但是对于要求一遍又一遍,基本上没有运行时间的惩罚。唯一需要注意的是函数内部的代码变为异步,因此不必返回值,而是必须使用回调或承诺。
或者,如果您只在某些事件处理程序中使用此函数(我看到dojo/on
),您可以在同一个需求块的范围内进行设置。