Ng-重复意外多次重复

时间:2014-02-07 03:22:32

标签: javascript html5 angularjs angularjs-ng-repeat angular-ng-if

我有一个看起来像这样的对象:

enter image description here

所以基本上我不知道对象的长度,我使用以下代码来渲染结果:

<table style="width: 100%" border="0" cellpadding="0" cellspacing="0">
    <tr ng-repeat-start="(key, item) in items() track by key" ng-if="item.primary"></tr>
        <td first someprop="2">first</td> 
    <tr ng-repeat-end ng-if="!item.primary">
        <td>[NOT] first</tr>
    </tr>
</table>

我希望表中的第一个元素(也突出显示)始终是具有primary=true属性的对象。

上述对象的预期结果:

enter image description here

当前结果:

enter image description here

如果我向对象添加第三个元素,我会得到:

enter image description here

FIDDLE:http://jsfiddle.net/UuzZT/

2 个答案:

答案 0 :(得分:1)

您的HTML中存在简单的语义错误,特别是ng-repeat-start元素未包含<td>,因此<td>每次都会显示ng-if,即使{{1}}是那里。更正在这里:

http://jsfiddle.net/UuzZT/1/

然而,还有其他问题源于你试图迭代一个对象;对象没有序数属性。

答案 1 :(得分:0)

您的第一个表格行不包括表格数据(td在tr之外)

将您的代码更改为:

<table style="width: 100%" border="0" cellpadding="0" cellspacing="0">
<tr ng-repeat-start="(key, item) in items() track by key" ng-if="item.primary">
    <td first someprop="2">first</td>
</tr> 
<tr ng-repeat-end ng-if="!item.primary">
    <td>[NOT] first</tr>
</tr>