2013-06-05 43 views
1

我有一個生成內容的dojo小部件,在我的情況下是短信。
消息文本是帶有<b>, <i>等標籤的格式化文本。當我通過${messageText}將它放到我的小部件中時,它顯示爲純文本。HTML在dojo小部件中顯示爲純文本

如何讓我的小部件解析所有這些標籤到DOM節點?

UPD .JSP片段:

<script> 
(new MyWidget({ 
    text: "<b>message</b>" 
}).placeAt(dojo.byId("placeWidgetHere"); 
</script> 

<div id="placeWidgetHere"></div> 

部件的.html模板:

<div>${text}</div> 
+1

我認爲你的問題在別的地方。我通過創建HTML小部件來測試它(Dojo 1.9),並且可以使用HTML標記。例子:http://jsfiddle.net/tLqWd/ – g00glen00b

+0

'parser.parse()'做了什麼? – Chechulin

+0

它將帶有'data-dojo-type'的HTML代碼轉換爲一個小部件。它與配置選項類似:'parseOnLoad:true'。 – g00glen00b

回答

0

的問題是,messageText有 「<」 和 「>」 符號轉換爲 「<」 及 「>」。 我將.replace(/&lt;/g, "<").replace(/&gt;/g, ">")添加到messageText,並開始正常工作。

感謝所有試圖幫助我的人。

1

而不是使用substitution variables(不推薦),你可以在您的自定義使用attribute map小部件。

<div> 
    <span data-dojo-attach-point="messageTextNode"></span> 
</div> 


declare('MyWidget'], [TemplatedMixin], { 
    template: ..., 

    messageText: '', 
    _setMessageTextAttr: { node: "messageTextNode", type: "innerHTML" }, 
}); 

new MyWidget({ 
    messageText: "<b>message</b>" 
}, "placeWidgetHere"); 
+0

什麼是_setMessageTextAttr? – Chechulin

+0

'_setXXXAttr'是一個小部件的命名約定,當一個小部件被一個名爲XXX的屬性實例化時,如果小部件上名爲'_setXXXAttr'的方法存在,它將被調用。否則,XXX值將直接設置到小部件上。 http://dojotoolkit.org/reference-guide/1.8/quickstart/writingWidgets.html#custom-setters-getters –

相關問題