2016-03-25 98 views
0

我想在一個模塊中創建一個函數,該模塊可以與各種依賴一起工作,但在模板中調用,到目前爲止,我只收到一個函數undefined錯誤。我哪裏去錯了,或者這是不可能的?RequireJS從模塊中返回一個函數用於模板

helper.js模塊

define(['aDependency'],function(){ 

    var sayHi = function(){ 
     console.log('Hi'); 
}; 
return{ 
    sayHi: sayHi 
} 

此模塊是我在主文件需要

requirejs(['lib/helper']); 

而且我想使用的功能在我的模板;

<button data-remodal-action="confirm" onClick="sayHi()"/> 

但是我得到一個未定義的函數。

任何幫助非常感謝。

乾杯

回答

1

好像你試圖調用sayHi功能就像它在全球範圍,但這不是因爲requirejs模塊有隔離範圍

要使用它像這樣 - <button data-remodal-action="confirm" onClick="sayHi()"/> 你應該這樣做

requirejs(['lib/helper'], function(helper){ 
    window.sayHi = helper.sayHi; 
}); 

但它是一個反模式設置全局變量將從HTML被調用。我會建議你做這樣的事情

HTML:

<button id="sayHiButton" data-remodal-action="confirm"></button> 

JS:

requirejs(['lib/helper'], function(helper){ 
    document.getElementById('sayHiButton').addEventListener('click', function(){ 
     helper.sayHi(); 
    }); 
}); 
0

你不能這樣做,

<button data-remodal-action="confirm" onClick="sayHi()"/> 

指向一個全局函數。

您的sayHi()功能是您的helper模塊返回的對象的一部分。這根本不是全球性的。如果您想將該功能添加爲按鈕上的單擊事件,則必須在可見的位置執行該操作。

也就是說助手模塊內部

define(['aDependency'],function(){ 

    var sayHi = function(){ 
     console.log('Hi'); 
    }; 
    $('button').click(sayHi); 
return{ 
    sayHi: sayHi 
} 

模塊內使用的輔助模塊:

requirejs(['lib/helper'], function (helper) { 
    $('button').click(helper.sayHi); 
}); 
相關問題