【问题标题】:Localizing templates with backbone, underscore on mobile在移动设备上使用主干、下划线本地化模板
【发布时间】:2013-10-07 00:13:11
【问题描述】:

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

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

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

在我的 HomeView.js 中有:

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以将任何您喜欢的 JavaScript 表达式放入 &lt;%= ... %&gt;。特别是,您可以访问全局变量。因此,如果您有一个全局应用程序命名空间:

    // 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/

    【讨论】:

    • 我刚刚想到访问全局变量。你把我从痛苦中救了出来。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多