0

我对 DOJO 1.8 还很陌生,想知道如何从 require 方法之外调用函数?我尝试实现一个淡入淡出的消息框。

我创建了方法:

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;
    }     
});

好的!它可以工作....但我不想从我的应用程序的其他地方调用它:

showMsg("Item saved");

但这不起作用: Uncaught ReferenceError: showMsg is not defined

我如何获得该参考?

谢谢您的帮助!

AFX

4

2 回答 2

0

就目前情况而言,您正在声明一个局部变量,因此它在程序的其他地方不可见。

例如,您可以使变量成为全局变量

window.showMsg = function(text) {
    dom.byId("msgbox").innerHTML = text;
}     

这种方法的缺点是,随着应用程序变得越来越大,最终会得到越来越多的全局变量,这使得维护变得更加困难。

因此,Dojo 提供了打包可重用代码块并引用它们的方法。当您使用“require”时,您已经在利用其中的一些功能——您可以访问大量的 dojo。您可以以相同的方式使您自己的代码作为可重用的块可见。

这是一个相当大的话题,但你可以从阅读这个开始

于 2012-10-26T11:54:30.503 回答
0

您可以做的另一件事是将 require 移动到函数内部。

即使你有很多这样的功能,虽然重复很烦人,但基本上没有因为一遍又一遍的要求而造成的运行时损失。唯一需要注意的是函数内部的代码变成异步的,所以你必须使用回调或承诺来代替返回值。

或者,如果您仅在某些事件处理程序(我看到dojo/on)中使用此函数,您可以在同一个 require 块的范围内设置它们。

于 2012-10-27T20:50:28.753 回答