我想在我的Phonegap / Backbone移动应用程序中本地化模板。我想以某种方式覆盖下划线渲染功能,总是会附加语言的额外属性。让我举例说明:
假设我需要(require.js)HomeView模板,如下所示:
<div>
<p><%= language.get('someText') %></p>
</div>
在我的HomeView.js中我有:
var template = _.template(HomeTemplate);
this.$el.html( template({language: LanguageModel}));
这样可行,但我不想总是将此语言属性附加到下划线模板。我可以以某种方式覆盖该渲染函数,因此它总是包含语言模型吗?
答案 0 :(得分:1)
您可以在<%= ... %>
中添加任何您喜欢的JavaScript表达式。特别是,您可以访问全局变量。因此,如果您有一个全局应用程序命名空间:
// I'll call it `app` for lack of a better placeholder.
window.app = { ... };
然后你可以将language
放在那里:
app.language = your_language_model;
并在任何模板中访问它,而不向_.template
调用或编译模板函数提供任何额外内容:
var t = _.template('<%= app.language.get('pancakes') %>');
var h = t();