我构建了一个 Flask 应用程序,用于显示用户在 DataTable 中上传的 CSV 文件中的文本数据。有时,文本可能包含转义字符,甚至一些代码/标签。我希望所有文本都按照原始文件中写入的方式显示,包括任何转义字符或其他代码/标签。由于我不需要讨论的原因,涉及替换文本本身中的字符的解决方案不适用于我的用例(因此额外的反斜杠或 ascii 字符或其他字符是不可接受的)。 有没有办法实现这个目标?
下面是一些我希望可以使用
String.raw
的 JavaScript 代码,但它仍然将“This is
bold”呈现为“This is bold”。不是我所期望的。 简化代码:
var sample = '<i>I</i> & <b>B</b>';
var data_table = $("#data-table").DataTable();
function redraw(sample) {
data_table.clear();
data_table.row.add([
String.raw`${sample}`
]);
data_table.draw();
}
i.value = sample;
i.oninput();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link href="https://nightly.datatables.net/css/dataTables.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/js/dataTables.js"></script>
Test:<input id="i" type="text" oninput="redraw(value)" size="50">
<div class="container">
<table border id="data-table" width="100%">
<thead>
<tr>
<th>default</th>
</tr>
</thead>
</table>
</div>
解决方案是使用
text
渲染助手
datatables.net/manual/data/renderers#Text-helper有了这些信息,我就能够在首次定义 DataTable 时声明如何呈现特定列,因此随后添加的任何行都将依赖于该定义来显示如何显示。
这是固定代码:
\\ define an existing HTML table as a DataTable object
\\ defined as a variable here b/c passed to another
\\ process not shown in this code sample
var corrTable = $(`#data-table`).DataTable({
// column index 1 holds text data
columnDefs: [
{
targets: [1],
render: DataTable.render.text()
},
],
});
\\ define function that will populate existing table
function prepareTable(data) {
var data_table = $(`#data-table`).DataTable();
data_table.clear();
data['table'].forEach(function(item) {
//insert rows
data_table.row.add([
item.id, item.text, item.some_number
])
})
data_table.draw();