如何避免在ng-repeat循环中呈现定义标记?

时间:2014-12-22 15:46:16

标签: angularjs angularjs-ng-repeat

假设我有一个像

这样的简单循环
<div ng-repeat="item in items">{{item.foo}}<br></div>

<div ng-repeat="item in items" ui-view="itemView"></div>

如何避免渲染定义标记(div)以获取:

Foo 1<br>
Foo 2<br>
Foo 3<br>

而不是:

<div>Foo 1<br></div>
<div>Foo 2<br></div>
<div>Foo 3<br></div>

为什么:我需要这个,即创建表格行,不允许<tr>包裹div,是的,我知道我可以使用<tr ng-repeat=...对于简单的情况,无论如何我更愿意将tr标记移动到itemView(我有几个条件来检查添加即适当的CSS类,否则我需要将这些类添加到行中的每个td

2 个答案:

答案 0 :(得分:2)

您可以使用tbody

<tbody ng-repeat="item in items">
  <tr>
    <td>{{ item.foo }}</td>
  </tr>
</tbody>

答案 1 :(得分:2)

通过使用 替换:true 属性创建自定义指令,您可以使用指令模板替换原始html div

这是一个受到ng-book启发的例子:

<div my-directive></div>

app.directive('myDirective' function() {
    return {
        template: '<div>my directive without replacement</div>
    }
});

html将保留并在其中注入指令的模板,如:

<div my-directive>
    <div>my directive without replacement</div>
</div>

但如果你设置&#34;替换:true&#34;像:

app.directive('myDirective' function() {
    return {
        replace: true
        template: '<div>my directive with replacement<div>'
    }
});

然后只有指令的模板,它取代了原来的

<div>my directive with replacement<div>