2016-07-27 69 views
0

我有多個javascript文件,並且它們都存在userIsLoggedin函數,我想在用戶登錄後調用userIsLoggedin函數調用所有javascript文件。在事件發生後調用多個javascript文件中處理的函數

有我的代碼:

login.js

... 
userIsLoggedin(); 
... 

file_1.js

... 
function userIsLoggedin(){ ... } 
... 

file_2.js

... 
function userIsLoggedin(){ ... } 
... 

file_3.js

... 
function userIsLoggedin(){ ... } 
... 

...

file_n.js

... 
function userIsLoggedin(){ ... } 
... 

,但它僅調用userIsLoggedin功能file_n.js文件。

+1

它不可能用單線調用調用所有函數,你得到的行爲是正確的。對於你的任務,你應該提供所有具有不同名稱空間的函數,然後調用1個常用單一函數中的所有函數,並在你的主腳本中調用全局/主函數調用所有函數。對於名稱空間,ref鏈接http://stackoverflow.com/questions/881515/how-do-i-declare-a-namespace-in-javascript – Rupal

回答

1

在你的每一個JS,這樣定義

var login = { 
    userIsLoggedin: function() { 
    } 
}; 

這裏login命名空間是命名空間名稱

複製在所有這同一個腳本js中不斷變化的命名空間名稱(即與file_1,file_2更換登錄文件, file_3 ......同樣

然後調用像

login.userIsLoggedin(); 
file_1.userIsLoggedin(); 
file_2.userIsLoggedin(); 
file_3.userIsLoggedin(); 
. 
. 
. 
file_n.userIsLoggedin(); 
所有登錄功能

您可以創建1個全局函數,您可以在其中添加所有這些調用。

0

如果我看到你的例子得到這個權利,JS只允許最後一個文件加載的函數聲明是有效的。會發生什麼是每個文件將被評估,下一個將覆蓋該聲明。因此,如果您要查看名稱空間中可用的函數,只有最後一個函數會在那裏。

如果你需要它從每個文件觸發,你需要組織你的代碼有點不同。喜歡的東西:

login.js

var obj1 = require('obj1.js'); 
var obj2 = require('obj2.js'); 
... 
var objN = require('objN.js'); 

(function userIsLoggedin(){ 
    obj1.userIsLoggedIn(); 
    obj2.userIsLoggedIn(); 
    ... 
    objN.userIsLoggedIn(); 
})(); 

obj1.js

module.export = { 
    userIsLoggedIn: function(){ 
    ...... 
    } 
} 

obj1.js

module.export = { 
    userIsLoggedIn: function(){ 
    ...... 
    } 
} 

objN.js

module.export = { 
    userIsLoggedIn: function(){ 
    ...... 
    } 
} 

這是你在找什麼?

相關問題