TL; DRHandlebars.js - 建立一個模板模板
在下面的把手模板...
<div class="field field-label">
<label>{{label}}</label><input type="text" value="{{{{attribute}}}}">
</div>
我需要的{{屬性}}進行評估,但value="{{
值屬性}}"
要打印。
背景
我已經有了一個模板一個有趣的使用。我的應用程序有幾十個表單(並且不斷增長!),以及幾種顯示它們的方法。顯然,它們可以顯示在瀏覽器,移動設備或PDF等等中。所以我想要做的就是用JSON定義這些表單,以便像MongoDB那樣生活。這樣,即使不更新HTML視圖,移動應用和PDF渲染功能,也可以輕鬆修改它們。
{
title: 'Name of this Form',
version: 2,
sections: [
{
title: 'Section Title',
fields: [
{
label: 'Person',
name: 'firstname',
attribute: 'FIRST',
type: 'text'
}, {
label: 'Birthday',
name: 'dob',
attribute: 'birthday',
type: 'select',
options: [
{ label: 'August' },
{ label: 'September' },
{ label: 'October' }
]
},
...
...
這是一種滋味。所以type: 'text'
結果<input type="text">
,name
是輸入的名稱,attribute
是來自模型yada yada的屬性。它與嵌套的可選表單相當複雜,但你明白了。
問題是,現在我有兩個上下文。第一個是帶有表單數據的JSON,第二個是來自模型的JSON。我認爲有兩個選擇我認爲會很好。
溶液1
包含已註冊作爲輔助模型上下文快速小閉合。
var fn = (function(model) {
return function(attr) {
return model[attr]
}
})(model);
Handlebars.registerHelper('model', fn)
...使用像這樣...
<input type="text" name="{{name}}" value="{{model attribute}}">
溶液2張
兩個通行證。讓我的模板輸出一個模板,然後我可以使用我的模型進行編譯和運行。一個很大的優點,我可以預編譯表單。我更喜歡這種方法。這是我的問題。 如何從我的模板中打印出{{屬性}}?
例如,在我的文本模板...
<div class="field field-label">
<label>{{label}}</label><input type="text" value="{{{{attribute}}}}">
</div>
我需要{{attribute}}
進行評估和{{屬性}的值}進行打印。
我想我可以用一個幫手來打印'{{}}'呵呵...... –
Soln 1看起來不錯。 –