2013-02-07 21 views
3

在我的項目中的JQuery模板中,我試圖寫出一個HTML字符串的變量,但不編碼HTML。當我剛剛輸出的變量,像這樣:無法在JQuery文本字符串上運行html tmpl

${description} 

它導致了原始的HTML字符串是與標籤輸出和所有像這樣:

<p>text <b>bold</b> <i>italic</i></p> 

但是,當我試圖把標記轉化爲現實的標籤在代碼中相同的位置:

{{html $description}} 

不輸出任何東西!

我嘗試了在變量中傳遞的十億種方法,但是我認爲在我沒有得到的HTML例程中會出現一些問題。

謝謝。

更新:

下面是它如何被稱爲:

this.$el.attr('data-id', tmplData.id). 
      data('id', tmplData.id).html($.tmpl(this.template, tmplData)); 

哪裏this.template是模板文件,tmplData是JSON,其中包括$說明和所需要的其他變量。

另一個更新:

{{html '<p>string</p>'}} 

不會像預期的那樣。但是

{{html $another_variable}} 

即使$ another_variable沒有HTML,也不會產生任何輸出。

另一個更新:

我也試過:

${$item.html(description)} 

,改變了調用模板

this.$el.attr('data-id', tmplData.id). 
     data('id', tmplData.id). 
     html($.tmpl(this.template, tmplData, { 
      truncate: _.truncateStrip, 
      html: _.html, 
     })); 

並寫了自定義HTML程序通過字符串按照建議不變:

html: function(str) { 
     return str; 
    } 

但仍然沒有骰子。

回答

11

答案是:

{{html description}} 

我試過早,但因爲我離開了大括號內寄生的空間,它沒有妥善解釋。

:-(

+0

由於它是有幫助的 – Andrei

+0

謝謝,我一開始沒有工作,因爲我還有前面的美元符號。 –

+0

這是迄今爲止最好,最正確的答案。 – Nico

0

如果您打開源代碼,您可以修改執行編碼的行。我沒有看到關閉它的選項,所以這可能是最簡單的解決方案。

變化:

encode: function(text) { 
      // Do HTML encoding replacing < > & and ' and " by corresponding entities. 
      return ("" + text).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;"); 
     } 

encode: function(text) { 
      // Do HTML encoding replacing < > & and ' and " by corresponding entities. 
      return text;   
} 
+0

我不想做一個全球性的變化,但見上最後的編輯 - 我想是這樣,你推薦什麼,但它並沒有區別 – TAH