我正在使用Require.js和文本插件。我試圖創建一個類似這樣的模板:在Require.js文本插件模板中,我應該如何提供javascript方法?
<%= somefunction(displayvalue) %>
我需要somefunction(...)可用於多個模板。包裝函數在多個地方使用的最佳方式是什麼?我正在考慮將它作爲模塊,但我不知道如何將它傳遞給模板。
我正在使用Require.js和文本插件。我試圖創建一個類似這樣的模板:在Require.js文本插件模板中,我應該如何提供javascript方法?
<%= somefunction(displayvalue) %>
我需要somefunction(...)可用於多個模板。包裝函數在多個地方使用的最佳方式是什麼?我正在考慮將它作爲模塊,但我不知道如何將它傳遞給模板。
編譯模板後,你會發現自己有一個函數可以調用,並且你傳遞了一些參數。因此,只要通過你的函數作爲參數:
var tpl = _.template(tplString);
tpl({ someFunction: function(val) { /* do something */ } });
雖然,我想你可能會更好,如果你只是你的模板裏面的數據傳遞值。如果模板幾乎沒有邏輯,模板實際上更容易調試和維護。所以,相反,我想是這樣的:
tpl({ someValue: someFunction(aValue) });
在其他JavaScript模板引擎(如把手),實際上你可以註冊helpers functions誰就會在全球範圍內提供大部分對您的模板數據執行動作。如果你真的需要在多個模板中使用相同的功能,我會考慮切換模板引擎。下劃線提供了一個微模板引擎,因此,不知何故限制了輔助函數 - 儘管能夠包含太多邏輯...
在我看來,下劃線模板適用於小型項目,應該使用小心。保持它們儘可能簡單:if/else
,打印數據,應該是這樣。如果您需要更多,請選擇更完整的模板引擎。
但即使在那裏,您在模板中執行的所有邏輯都很難調試。
所以!把事情簡單化。
把手幫手功能看起來像我需要的東西。我會考慮使用它來代替下劃線模板。 我不想在將數據傳遞給模板之前運行函數,因爲我需要一些條件語句的數值。該函數會將其轉換爲更漂亮的字符串。 – ajma