2013-10-21 54 views
0

我正在使用BackboneJS和RequireJS構建一個不太小的應用程序,我有時會發現自己想要訪問某些對象(假設:某個實例化視圖#1 )從遠離應用對象分層樹中的另一個對象(例如,完全不相關的視圖實例#2的子子視圖)中獲取。請參閱複雜RequireJS應用程序中的特定對象實例

是否有一個很好的做法來實現這一目標?在某種程度上:

一)不涉及對對象的創建

b)使在不同對象的參數不破,似乎排除RequireJS良好做法「無全局」範式

在我看來,選項a)使代碼非常難以處理,因爲應用程序變得更大。而且很難理解,因爲你需要不斷追蹤所有這些參數將你帶到哪裏。

而選項b(使用全局變量)是全有或全無。如果我使用一個全局的,我可以使用一個大的全局命名空間,我會忽略其中一個,我認爲最重要的RequireJS功能。

回答

0

在我的應用程序中,我有最高3級的層次結構。我在初始化視圖時傳遞選項,如下所示。

var view = new ChildView({dropdown: this.dropdowm}); 

並在ChildView中像這樣訪問。

this.options.dropdown 

這是Backbone.js中規定的方式。有時,對於像「客戶ID」,「產品ID」這樣的屬性,我不會將它們傳遞給層次結構中的每個級別。我初始化一個名爲App的全局對象,我將這些屬性附加到如下所示的App中。

var App = {}; 
App.cutomerId = "12"; 

這樣我就可以訪問客戶ID喜歡App.customerId在任何地方在我的應用程序。

但我不直接將意見/型號直接放入App。因爲,通過隨時隨地訪問您的視圖/模型很容易中斷您的應用。其他開發人員可以在應用程序的任何位置訪當你調試某些錯誤時,它會變得更加複雜,因爲他可能已經在你的所有應用程序中使用了該模型。這比追蹤this.options更復雜。所以你應該知道你應該在全球範圍內包含哪些東西。