2012-10-26 36 views
0

我對DOJO 1.8很新,想知道如何從一個require-method外部調用一個函數?我嘗試實現一個淡入淡出的消息框。基本DOJO 1.8:如何獲得一個方法的參考?

我創建的方法:

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

就目前情況來看,你正在聲明一個局部變量,所以它在程序的其他地方是不可見的。

你可以使全球的變量,例如

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

這種方法的缺點是,當你的應用程序變得更大,你結束了越來越多的全局變量,這讓維修困難。

因此,Dojo提供了打包可重用代碼塊並引用它們的方法。當您使用「require」時,您已經在利用其中的部分功能 - 您可以訪問大量的dojo。您可以使用自己的代碼作爲可重用的塊以相同的方式顯示。

這是一個相當大的話題,但你可以通過閱讀this

+0

OK!謝謝。我會讀那個。 – AFX

0

開始,你可以做的另一件事是將函數內部的需要。

即使你有很多這樣的功能,雖然這很煩人重複,但基本上不需要反覆運行。唯一需要注意的是函數內的代碼變得異步,所以不必返回值,而必須使用回調或承諾。另外,如果你只是在一些事件處理程序中使用這個函數(我看到的是dojo/on),你可以在同一個require塊的範圍內設置它們。 OK!