2012-11-06 41 views

回答

4

編譯模板後,你會發現自己有一個函數可以調用,並且你傳遞了一些參數。因此,只要通過你的函數作爲參數:

var tpl = _.template(tplString); 
tpl({ someFunction: function(val) { /* do something */ } }); 

雖然,我想你可能會更好,如果你只是你的模板裏面的數據傳遞值。如果模板幾乎沒有邏輯,模板實際上更容易調試和維護。所以,相反,我想是這樣的:

tpl({ someValue: someFunction(aValue) }); 

在其他JavaScript模板引擎(如把手),實際上你可以註冊helpers functions誰就會在全球範圍內提供大部分對您的模板數據執行動作。如果你真的需要在多個模板中使用相同的功能,我會考慮切換模板引擎。下劃線提供了一個微模板引擎,因此,不知何故限制了輔助函數 - 儘管能夠包含太多邏輯...

在我看來,下劃線模板適用於小型項目,應該使用小心。保持它們儘可能簡單:if/else,打印數據,應該是這樣。如果您需要更多,請選擇更完整的模板引擎。

但即使在那裏,您在模板中執行的所有邏輯都很難調試。

所以!把事情簡單化。

+0

把手幫手功能看起來像我需要的東西。我會考慮使用它來代替下劃線模板。 我不想在將數據傳遞給模板之前運行函數,因爲我需要一些條件語句的數值。該函數會將其轉換爲更漂亮的字符串。 – ajma

相關問題