【发布时间】:2023-03-27 00:25:01
【问题描述】:
我创建了一个自定义指令来输出一个相当简单的表格数据。这是我当前的代码:
app.directive('searchResult', function () {
return {
restrict: 'E',
scope: { content: '=' },
link: function (scope, element, attrs) {
var html = '<table class="table table-bordered">';
angular.forEach(scope.rows, function (row, index) {
if (row.names.length > 1) {
var names = row.names;
html += '<tr>';
html += '<td rowspan='+row.names.length+'>'+row.num +'</td>';
html += '<td>'+names[0] + '</td>';
html += '</tr>'
for (var i = 1; i < names.length; i++) {
html += '<tr>';
html += '<td>'+names[i] +'</td>';
html += '</tr>';
}
} else {
html += '<tr>';
html += '<td>'+row.num +'</td>';
html += '<td>'+row.names[0] + '</td>';
html += '</tr>';
}
})
html += '</table>';
element.replaceWith(html)
}
}
});
这段代码的问题在于绑定。如果用户搜索新项目,该指令将在先前显示的结果之上创建一个新表,而不是替换旧结果。
我正在尝试使用 templateUrl 并有一个包含 {{content}} 的模板并且绑定有效。旧的搜索结果被新的取代。
有没有办法在模板中执行此表代码创建?
【问题讨论】:
标签: angularjs templates html-table directive