2016-03-09 62 views
0

我使用HandlebarsJS 3.0與Marionette框架並使用~符號來刪除不需要的空格/換行符。但預計不會輸出,與下面的示例代碼:Handlebarjs刪除空白處理,但需要保留一個單詞後

<h3>Total 
{{~#if mod}} 
{{mod}} 
{{~else~}} 
Modal 
{{~/if~}} 
</h3> 
  • 預期輸出:共模態
  • 實際輸出: TotalModal

是否有可能增加一個每個單詞後的空格?

更新: 如果我刪除〜從else聲明,結果如下:是否可以避免空格之間的空白?

enter image description here

回答

0

我固定的問題與你的空間,從如果條件移除左波浪線,「全面」之後增加一個空格。

如果您不想要任何前導空格或尾隨空格,則必須將整個模板放在一行上。

createTplNode(document.body, parseTpl('#modal'), { 
 
    mod: false 
 
}); 
 

 
function parseTpl(selector) { 
 
    return Handlebars.compile(document.querySelector(selector).innerHTML); 
 
} 
 

 
function createTplNode(parent, tpl, data) { 
 
    var el = document.createElement('DIV'); 
 
    parent.appendChild(el); 
 
    el.outerHTML = tpl(data); 
 
    return el; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.3/handlebars.min.js"></script> 
 

 
<script id="modal" type="text/x-handlebars-template"> 
 
    <h3>Total {{#if mod}}{{mod}}{{~else~}}Modal{{~/if~}}</h3> 
 
</script>

+0

你能看看我更新的問題嗎?我嘗試了你的修復,但輸出描述在屏幕截圖中。 – peterkr

+0

@peterkr:已更新。 –

0

我不得不刪除空白/前壓縮我Handelbar模板。我一直在運行這個任務相當長的一段時間(但我預編譯我的模板),我們基本上通過這個功能壓縮我們的模板字符串:

function compressHB(content) { 
    "use strict"; 
    return content.replace(/\s{2,}/g,"").replace(/\n/g,"").replace(/\t/g,""); 
} 

這是消除任何連續的空格,換行和製表符。 如果單詞之間有兩個空格,它將刪除它們之間的所有空格,因此您必須確保沒有多餘的空格(typos)。

相關問題