angularjs:ng-repeat-start和ng-repeat-end with inner ng-repeat

Jim*_*ime 16 angularjs angularjs-ng-repeat

嗨我有一个简单的ng-repeat-start和end用例,工作得很好,当我想添加内部ng-repeat时出现问题.这是我的代码

<tr ng-repeat-start="obj in rows" >
  <td ng-repeat="e in obj.row">{{e}}</td>
</tr>
<tr ng-repeat-end>
  <td colspan="4">{{obj.description}}</td>
<tr>
Run Code Online (Sandbox Code Playgroud)

内部ng-repeat到td元素不起作用,当我检查html源代码时,我看到了ngRepeat注​​释,但是没有创建td元素.

<!-- ngRepeat: e in obj.row -->
Run Code Online (Sandbox Code Playgroud)

我丑陋的解决方法(假设我知道该向量的大小)是:

<tr ng-repeat-start="obj in rows" >
  <td>{{obj.row[0]}}</td>
  <td>{{obj.row[1]}}</td>
  <td>{{obj.row[2]}}</td>
  <td>{{obj.row[3]}}</td>
</tr>
<tr ng-repeat-end>
  <td colspan="4">{{obj.description}}</td>
<tr>
Run Code Online (Sandbox Code Playgroud)

zs2*_*020 18

我不知道你是否采用了棱角分明1.1.6或不因为ng-repeat-startng-repeat-end不是1.1.5或1.0.7产品尚未推出.

但是,您实际上不必使用新指令来实现这一点.您现在可以像这样简单地实现它:

<table>
    <tbody ng-repeat="obj in rows">
        <tr ng-repeat="e in obj.row">
            <td>{{e}}</td>
        </tr>
        <tr>
            <td colspan="4">{{obj.description}}</td>
        <tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

当AngularJS 1.1.6版本正式发布时,您可以使用ng-repeat-startng-repeat-end重新实现它.

Demo

  • @sza在tbody级别由ng-repeat生成的html代码将创建几个tbody元素.这里是你的例子生成的代码(非常好用)<table> <! - ngRepeat:obj in rows - > <tbody ng-repeat ="obj in rows"class ="ng-scope"> <! - ngRepeat:e in obj.row - > <tr ng-repeat ="e in obj.row"class ="ng-scope"> </ tbody> <tbody ng-repeat ="obj in rows" class ="ng-scope"> <! - ngRepeat:e in obj.row - > <tr ng-repeat ="e in obj.row"class ="ng-scope"> </ tbody> </ table > (4认同)