ES6模板字符串语法作为HTML模板实例页面
回到相关文章 »效果:
| 文章标题 | 发布时间 | 评论数 | |
|---|---|---|---|
${obj.title} |
${obj.time} | ${obj.comment} |
代码:
HTML代码:
<table id="tableMix" class="ui-table table">
<thead>
<tr>
<th width="20"><input type="checkbox"></th>
<th>文章标题</th>
<th width="22%">发布时间</th>
<th width="15%" align="right">评论数</th>
</tr>
</thead>
<tbody>
<template>
${data.map(function (obj, index) {
return `<tr>
<td><input type="checkbox" value="${obj.id}"></td>
<td><div class="ell">${obj.title}</div></td>
<td>${obj.time}</td>
<td align="right">${obj.comment}</td>
</tr>`;
}).join('')}
</template>
</tbody>
</table>
JS代码:
/**
* Convert a string to a template-string
* @param {Object} params 模板数据
* @return {String} 模板字符串语法解析后的字符串
*/
String.prototype.interpolate = function (params) {
const names = Object.keys(params);
const vals = Object.values(params);
return new Function(...names, `return \`${this}\`;`)(...vals);
};
// 业务处理代码
var eleTbody = document.querySelector('#tableMix tbody');
var strTemplate = eleTbody.querySelector('template').innerHTML;
// 获取数据
fetch('./ajax-article-list.php').then(res => {
return res.json();
}).then(json => {
if (json.code === 0) {
eleTbody.innerHTML = strTemplate.interpolate(json);
}
});