2016-04-25 54 views
0

我正在開發一個docx模板應用程序。javascript模板引擎可以忽略一些標籤<w:t></w:t>?

var data={ firstname:"david", age: 12} 
var template= " {{firstname}} is {{age}} years old." 

通常情況下,使用上述數據和模板將呈現:

david is 12 years old. 

在我的情況下,該模板字符串將首先用Microsoft Word寫,然後我會用getOOxml命令(辦公。 js庫),這樣的東西將被返回。

var template = "<w:t>{{</w:t><w:t>firstname</w:t><w:t>}}</w:t> is <w:t>{{</w:t><w:t>age</w:t><w:t>}}</w:t> years old." 

我之所以用getOOxml而不是命令的getText是OOXML可以包含格式信息,但文本不能。

我想使用javascript模板引擎進行渲染,但<w:t>標記會停止模板引擎的工作。

有沒有JavaScript模板引擎可以ingore <w:t>

回答

0

使用正則表達式在通過handlebars.js或您正在使用的任何預處理器運行之前刪除這些標記。

var source = "<w:t>{{</w:t><w:t>firstname</w:t><w:t>}}</w:t> is <w:t>{{</w:t><w:t>age</w:t><w:t>}}</w:t> years old."; 

// Remove those tags. 
source = source.replace(/\<w\:t\>/g, "").replace(/\<\/w\:t\>/g, ""); 

// Run your template through your pre-processor. 
var template = Handlebars.compile(source); 

演示: https://jsfiddle.net/Ly48395t/

+0

謝謝您的回答。這可能是一個很好的解決方案,但不是我想要的。我希望保留這些標籤(或者暫時刪除它們並將它們放回),因爲標籤可以包含上面示例中未顯示的其他一些信息,這些信息很重要。 –

+0

然後將它們替換爲帶有數據屬性的''標籤。 ''。這樣,您可以稍後返回並解析出原始代碼仍然具有有效HTML的內容。 – user2867288