2012-12-21 31 views
2

我正在使用Tapestry5,jQuery和JSON。我想知道如何在兩個jQuery文件之間共享json數據。我的JSON數據正在被我的框架傳遞給文件A init。我不知道如何讓文件B與文件A一起工作。我需要修改文件A中的json數據以便在文件B中使用,反之亦然。我的目標是分離我的JavaScript的功能,所有使用相同的JSON obj。我對這件事很陌生,所以也許我一切都是錯誤的。jQuery共享兩個jQuery文件之間的json數據

文件

(function ($) { 
    T5.extendInitializers(function(){ 
     function init(jsonData) { 
      //do something with jsonData 
     } 
    } 
} 

文件B

(function ($) { 
    function init(jsonData) { 
     //do something with jsonData 
    } 
} 

回答

2

簡單的方式來分享他們將是使jsonData全球。稍微好一點的版本將包裝jsonData與單身。

另一種方法是將jsonData傳遞給兩個init函數。 Javascript是通過引用傳遞的,所以如果您在調用兩個init函數時將jsonData傳遞給兩個函數,則一個函數所做的更改將被另一個函數視爲。

需要更多的上下文來推薦實際上最好的方法。

+0

我會如何做呢? –

+0

因此,如果我正確理解了你的意思,如果我將第二個初始化程序添加到文件B中,那麼json數據將自動保持同步? –

+0

我不是說第二個初始值設定項。我在說,如果你將同樣的事情傳遞給現有的初始化器,那麼兩個函數中的jsonData不只是相同的數據,它是同一個對象,因爲該對象是通過引用傳遞的。因此,如果文件B更改jsonData,它將更改文件A看到的同一個對象。 –

3

這可能是最簡單的方法

<script>window.jsonData = {foo: "bar"};</script> 
<script src="a.js"></script> 
<script src="b.js"></script>