我一直在使用icanhaz.js進行一些JS模板渲染,這太棒了!但是,我似乎無法理解渲染一些複雜對象背後的想法,然後迭代它們。icanhaz.js&Mustache.js:渲染更復雜的項目
基本上,在一個模板的頭部我想渲染一些基本的字符串,然後迭代一個對象,但我需要在另一個模板中預先處理該對象,因爲它有一些額外的變量。
所以,它看起來像這樣:
<script id="tmpl_map" type="text/html">
<h4>{{ equipment }}
<h3>{{ number }}</h4>
{{#rows}}
{{.}}
{{/rows}}
</script>
我的JavaScript代碼是相當簡單的這樣:
view = {
equipment: data.active.equipment,
number: data.active.number,
rows: function() {
// This is where it all falls apart, I don't *get* this
return function(text, render) {
var rows = [];
_.each(data.map.rows, function(el, index) {
view = { row: el[0], has_split_next: el[1] };
rows.push(ich.map_header(view));
});
return render(rows);
}
}
}
基本上,該行有自己的模板,因爲它的每一行都有檢查has_split_next
並可能輸出額外的HTML。從我的理解,我不能簡單地在迭代中使用點符號,所以我需要做這個額外的處理
但是,我得到的輸出是一堆[object Object]
實例。
謝謝,這最終幫助我想出了它。我只是過分複雜的事情。乾杯! – Bartek 2011-05-26 15:17:47
沒問題。大約5個月前開始在工作中使用鬍子,並試圖做一些這樣的複雜的東西。最好將所有數據重構爲你需要的格式。我發現模板首先有助於編寫重構代碼,因爲您確切知道它應該如何顯示。 – sciritai 2011-05-26 19:33:21