2013-10-07 59 views
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})); 

這作品,但我不想總是將此語言屬性附加到下劃線模板。我能否以某種方式覆蓋該渲染函數,以便始終包含語言模型?

回答

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/

+0

我只是想到訪問全局變量。你從我的誤解中拯救了我。十分感謝。 – gorgi93