我正在使用Angular Datatables来显示记录。但似乎这个表插件会自动清理单元格中的值。
例如,如果我的数据是“Test Record& GT”,它将显示“Test Record>”但我的要求是显示“Test Record& GT”。到目前为止,我已经探索了“createdCell”函数并创建了过滤器和指令来解决这个问题,但无济于事。
当我使用“createdCell”
时,这是我的代码.withOption('createdCell', function (cell, cellData, rowData, row, col) {
$(cell).html(cellData);
})
但它仍然会返回已清理的数据。请帮忙。谢谢:))
答案 0 :(得分:1)
Sanitize适用于不在.text()
但如果您执行$(cell).text(cellData)
而不是$(cell).html(cellData)
,则不会进行清理,因此您的代码将不会呈现为html,并且会以文本的形式呈现。
这是表示.html()
和.text()
之间区别的小提琴
http://jsfiddle.net/hossain/sUTVg/
答案 1 :(得分:1)
我同意Tirthraj Barot的答案,因为它会阻止HTML编码,但整个设置确实没那么有意义:然后createdCell()
被称为cellData
已填充到<td>
。所以基本上你只需再次插入cellData
,就像文本一样。
更好的方法是使用&#34; &amp; amp; amp;特技&#34;在renderWidth()
。只需将&
替换为&
,即不会将任何HTML实体编码为其特殊字符,因为它们会被混淆:
.renderWith(function(data, type, full) {
return data.replace('&', '&') //use /g if you have multiple &'s
})
这也可以确保您可以使用指令,就像在last question:
中一样.renderWith(function(data, type, full) {
return "<my-directive>"+data.replace('&', '&')+"</my-directive>";
})
如果您再次填充cellData
,则需要再次$compile
或将$compile
换入$timeout
。通过替换&
,您不需要它。
参见演示 - &gt;的 http://plnkr.co/edit/gmVAm7qvG9lXVsOgWg8K?p=preview 强>