1

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

假设我需要(require.js)HomeView 模板,它看起来像:

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

在我的 HomeView.js 中,我有:

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

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

4

1 回答 1

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/

于 2013-10-07T00:40:51.173 回答