在这种情况下如何在Backbone中使用全局变量?问题是我有超过120个视图,如HomeView
,并且在所有视图中定义相同的polyglot
var会很困难。还有另一种方式吗?
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 :(得分:0)
我想提一下全局变量很糟糕。尽量将自己限制在尽可能少的范围内。全局命名空间污染非常危险,将来可能会导致意外错误。
我经常用来解决污染全局命名空间问题的一种技术是创建自己的命名空间。
例如,您可以执行类似
的操作window.myNamespace = window.myNameSpace || {};
window.myNamespace.TranslateView = ...;
window.myNamespace.HomeView = ...;
如果HomeView和TranslateView属于不同的模块,您也可以命名为。
window.myNamespace.TransteModule = {};
window.myNamespace.TransteModule.TranslateView = ....;
这样,您只需为命名空间创建一个全局变量。您还可以通过其包含的模块轻松识别视图。