2013-02-22 108 views
0

我們在web應用程序中使用handlebars預編譯模板。我們最近破壞了其中一個元素 - 在某個位置正在使用錯誤的HTML。在查看預編譯的js時,我可以看到缺少元素。預編譯的HTML相當大且很複雜,有很多句柄操作符。這裏是一個非常簡化的版本:handlebars預編譯模板問題

{{#if isGeneric}} 
<!-- SEARCH FOR ME--> 
<td class="empty">&nbsp;</td> 
<td class="empty">&nbsp;</td> 
<!-- THE END FOR ME--> 
{{else}} 
<td class="description"><p id="{{productId}}" isGeneric="{{isGeneric}}" productType="{{productType}}" class="bluetext productid_opener">{{description}}</p> 
<td class="something">{{productName}}</td> 
{{/if}} 

這段代碼在HTML是非常相似的另一個片段(如果讓任何區別)。

當我進行預編譯並在生成的programXX中搜索HTML時,我無法在任何地方找到代碼(例如「搜索我」)。我注意到,在特定的代碼段之前和之後的句柄程序編號有一個缺口。例如: -

function program52(depth0,data) { // find elements in the condition just prior to the "if" above } 
function program54(depth0,data) { // find elements from HTML in condition just after the "if" above } 
從我會假設函數 program53包含了相關的代碼,但它爲什麼不包含在生成的HTML

這樣嗎? handlebars如何確定在HTML中包含或排除什麼?

+0

你能自己編譯違規模板嗎?您是否嘗試過使用簡單的'Handlebars.compile'調用在瀏覽器中手動編譯它? – 2013-02-22 17:31:21

+0

瀏覽器內編譯工作。該模板在客戶端檢索並編譯並正確呈現,但行爲不一致 - 在沒有對代碼庫進行任何更改的情況下,預編譯模板從正確的代碼片段使用不正確的片段,然後再次開始工作,我們的源代碼歷史記錄,代碼庫沒有變化。我們通過一個nodejs腳本運行預編譯,我能想到的唯一合乎邏輯的原因是在主機+異步nodejs性質上預編譯速度。 – Brett 2013-02-25 10:04:45

回答