2016-01-26 80 views
0

我使用的是requireJS,我有兩個文件(app,js和file1.js)。我需要使用require()在app.js中實例化file1.js,然後從app.js調用file1.js中的函數。我怎麼做?如何獲取JavaScript文件的對象(句柄)?

app.js

define(function(require){ 
    var file1 = require('file1.js'); 
    file1.load_function(); 
} 

file1.js

define([], function(){ 
    var load_function = function(){ 
     //Some logic 
    } 
} 

但在這裏, 「load_function()函數」 被不被調用加載。並且在我使用「var file1」作爲句柄的方式中存在錯誤。

有沒有辦法從「app.js」獲取「file1.js」的句柄?

如何防止函數在未被調用的情況下加載(執行)?

+0

我覺得你很接近,你需要檢查你的語法,並擺弄它。您應該將file1命名爲應用程序的依賴項,並且在應用程序需要的回調中使用file1的膽量。簡而言之,找到一個基本的嵌套需求調用的現有工作示例,並修改文件和函數名稱以適合您的代碼。 – dandavis

回答

0

您的app.js文件沒有錯誤。行var file1 = require('file1.js');加載模塊file1.js並將其綁定到本地變量file1。然後你可以撥打file1.load_function()

您需要導出功能:

define(function (require, exports, module) { 
    var load_function = function(){ 
     //Some logic 
    } 
    exports.load_function = load_function; 
}); 

順便說一句,你不應該把.js擴展您的模塊名稱,以便參考模塊命名file1.jsfile1的文件中。

+0

將使用出口給我一個來自app.js的句柄? 「file1」是我爲這個問題給出的名稱,實際的模塊有一個合適的名稱:) – ashrithhcs

+0

好吧,那麼我已經刪除了該評論。 – Louis

+0

你所做的一切對我來說都很好看。 *你實際上正在用'var file1 = require('file1.js')加載'file1';'當你調用'load_function'時因爲你沒有導出它而不工作。 – Louis

相關問題