2013-11-22 30 views
0

我期待在使用Backbone.js的Backbone.js的:_.template()函數結構

構建的應用程序的JavaScript代碼

那裏我找到一個函數

render: function() { 
     var that = this, 
      template = _.template($(that.templateId).html(), that.model.attributes); 

    } 

,並在這裏templateId: 「#abc」

我只是想了解關於_.template的結構()函數

任何人都可以請幫我在理解和如何採取that.model.attributes作爲輸入

請原諒我,如果你需要一些更多的信息。

回答

2

由於手冊說:

模板

_.template(templateString,[數據],[設置])

編譯的JavaScript模板插入功能,可以用於評估 呈現。

...您可以將數據對象作爲第二個參數傳遞給模板,以便立即呈現而不是返回模板函數。

來源:http://underscorejs.org/#template

所以基本上,_.template()採取HTML(模板腳本)使用id = abc的DOM元素DOM中的某處定義的。編譯通過的數據that.model.attributes並返回DOM部分呈現並準備使用。

如果你沒有通過第二個參數data你會得到一個模板函數被再使用,即:

var rendered = template({whatever: that.model.attributes}); 

that.model.attributes所以this.model.attributes所以(僞)thisview.model.attributes是指模型綁定到這個視圖。

無論如何,我建議你閱讀

+0

你說它返回一個函數,但我可以看到它返回一個變量名稱模板,如template = _.template($(that.templateId).html(),that.model.attributes); $( 「高清」)。HTML(模板); –

+0

我想作者比我的和你的更具體的想法。他寫道:「將JavaScript模板編譯爲可以評估渲染的函數。」因此,我想'template = _.template($(that.templateId).html()...'返回一個函數,然後可以使用'template()'用於渲染DOM編譯。 – ilpaijin

+0

通過閱讀手冊,您可以找到所有答案。 '您可以將數據對象作爲第二個參數傳遞給模板,以便立即渲染而不是返回模板函數。 – ilpaijin