2014-11-24 113 views
0

在這種情況下,我如何在骨幹中使用全局變量?問題是我擁有像HomeView這樣的120多個視圖,並且在所有視圖中定義相同的polyglot變得太難了。有另一種方法嗎?骨幹全局變量

var TranslatetView = Backbone.View.extend({ 
    window.polyglot = new Polyglot({phrases:{'hello':'hello'}}); 
    var polyglot = window.polyglot.phrases; 
}); 

var HomeView = Backbone.View.extend({ 
    console.log(polyglot.hello); 
}); 

回答

0

我想提一下,全局變量是不好的。儘量限制自己儘可能少。全球命名空間污染是非常危險的,並且可能會在未來導致意外錯誤。

我經常用來解決污染全局命名空間問題的技巧是創建自己的命名空間。

例如,你可以這樣做

window.myNamespace = window.myNameSpace || {}; 
window.myNamespace.TranslateView = ...; 
window.myNamespace.HomeView = ...; 

如果HomeView和TranslateView屬於不同的模塊,也可以命名空間的。

window.myNamespace.TransteModule = {}; 
window.myNamespace.TransteModule.TranslateView = ....; 

這樣,你只能創建1爲您的命名空間的全局變量。您還可以通過其包含的模塊輕鬆識別視圖。