2017-08-31 120 views
1

任何人都可以幫我解決這個問題嗎?加載JavaScript的變量即使被加載也不能調用

如果我有這個工作示例

var Login = function() { 

var handleLogin = function() {//code here 

} 

var handleForgetPassword = function() {//code here  
} 

var handleRegister = function() {//code here 
} 

return { 
    init: function() { 

     handleLogin(); 
     handleForgetPassword(); 
     handleRegister(); 

    } 

}; 

}(); 

jQuery(document).ready(function() { 
    Login.init(); 
}); 

下面的例子給出了一個錯誤。即使我確定該文件已加載。我無法確定函數的範圍。

<script src="javascriptLoginfile.js" type="text/javascript"></script> 
<script> 
jQuery(document).ready(function() { 
    Login.init(); 
}); 
</script> 

錯誤

Uncaught ReferenceError: Login is not defined at HTMLDocument. (login:160) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at Function.ready (jquery.min.js:2) at HTMLDocument.K (jquery.min.js:2)

+0

也許有對被停止執行javascriptLoginFile.js一些錯誤之前登錄完全實例? – Bardo

+0

您提到的文件與文件完全相同,除了最後的這一部分。 (函數(){ Login.init(); }); –

+0

我已驗證您的代碼並正在正常工作,即將功能代碼登錄到單獨的JS文件中,並從jQuery文檔準備好的HTML頁面調用該函數。沒有問題(在我的機器上進行本地測試)。 –

回答

1

爲我工作。

var Login = function() { 
 

 
    var handleLogin = function() { //code here 
 
    console.log('handleLogin'); 
 
    } 
 

 
    var handleForgetPassword = function() { //code here  
 
    console.log('handlForgetPassword'); 
 
    } 
 

 
    var handleRegister = function() { //code here 
 
    console.log('handleRegister'); 
 
    } 
 

 
    return { 
 
    init: function() { 
 

 
     handleLogin(); 
 
     handleForgetPassword(); 
 
     handleRegister(); 
 

 
    } 
 

 
    }; 
 

 
}(); 
 

 
jQuery(document).ready(function() { 
 
    Login.init(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

-1

因爲是的WebPack捆綁的一切,我無法從綁定的腳本之外調用。

我解決了這個變化:

var Login = function() { } 

要:

window.Login = function() { }