2015-07-03 34 views
1

我有一個JavaScript文件,放置在我的Meteor應用程序的客戶端/ lib文件夾中。隨着文件變大,我決定將它分成3個文件,並在全局命名空間中定義一個對象'App',以便3個文件共享數據。在加載到Meteor的JavaScript文件之間共享全局變量

每個文件與

var app = app || {}; 

(function() { 
    'use strict'; 

    app.object1 = { 

這樣,文件2和文件3啓動仍然可以使用app.object1,等等。

問題是,當流星加載文件時,它似乎自動用函數(){}包裝它,這使得app.object1不能從隨後加載的文件中訪問。

(function(){ 
    var app = app || {}; 

    (function() { 
    'use strict'; 

    app.object1 = { 

避免此問題的最佳方法是什麼?謝謝。

編輯:我參考了這篇文章[鏈接:] [1] Global variables in Meteor它建議定義變量沒有「var」。我將file1中的代碼替換爲app = {},但現在我的應用程序在下面的代碼行中崩潰在file2中,下面粘貼了來自Meteor控制檯的消息。

app.ALL_LIST = 'all' 

=>你的應用崩潰。等待文件更改。 ReferenceError:應用程序未定義

+0

[流星中的全局變量]的可能重複(http://stackoverflow.com/questions/27509125/global-variables-in-meteor) –

+0

感謝您的有用鏈接。遵循該鏈接中的說明並創建一個輸出全局變量的包。現在它可以工作。 –

回答

1

忽略var在您的變量聲明;)然後它將被全局範圍。

+1

命名空間對您的全局變量很有幫助:https://medium.com/@sirchill3/meteor-managing-the-global-namespace-5a50080a05ea – ryascl

+0

偉大的文章,感謝您的加入。 –

相關問題