使用主干本地化模板,在移动设备上下划线

时间:2013-10-07 00:13:12

标签: backbone.js underscore.js underscore.js-templating

我想在我的Phonegap / Backbone移动应用程序中本地化模板。我想以某种方式覆盖下划线渲染功能,总是会附加语言的额外属性。让我举例说明:

假设我需要(require.js)HomeView模板,如下所示:

<div>
   <p><%= language.get('someText') %></p>
</div> 

在我的HomeView.js中我有:

var template = _.template(HomeTemplate);
this.$el.html( template({language: LanguageModel}));

这样可行,但我不想总是将此语言属性附加到下划线模板。我可以以某种方式覆盖该渲染函数,因此它总是包含语言模型吗?

1 个答案:

答案 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();

演示:http://jsfiddle.net/ambiguous/jkmG7/1/