我有以下数组:
vm.persons = [{id:1, name:'Manuel1', age:30}, {id:2, name:'Manuel2', errorCode:'Error', age:18}]
我想以这种方式表现出来:
------------------
|Name | Age |
------------------
|Manuel2 | Error |
------------------
|Manuel1 | 30 |
------------------
因此,如果存在errorCode
,则不应显示年龄。
这就是我现在所拥有的:
<tr ng-repeat="person in persons" ng-class="...">
<td>{{::person.name}}</td>
<td>{{::person.age}}</td>
</tr>
我该怎么做呢?我想首先显示有错误的人,然后是其他人。我认为你可以用array.sort做到这一点,对吧?
答案 0 :(得分:1)
<tr ng-repeat="person in persons | orderBy:'errorCode'" ng-class="...">
<td>{{::person.name}}</td>
<td>{{::(!person.errorCode) ? person.age : 'Error'}}</td>
</tr>
答案 1 :(得分:0)
我使用指令ng-if完成了这样做:
<tr ng-repeat="person in persons" ng-class="...">
<td>{{::person.name}}</td>
<td ng-if="person.age">{{::person.age}}</td>
</tr>
ng-if评估表达式,如果为true则显示元素...您可以执行类似ng-if="person.errorCode != 'Error'"
或ng-if="!person.errorCode"
的操作,您必须检查是否符合您的需要的真假表达式。 。
答案 2 :(得分:0)
<tr ng-repeat="person in persons" ng-class="...">
<td>{{::person.name}}</td>
<td>{{person.age == 'Error' ? '-' : ::person.age}}</td>
</tr>
如果你不想显示你的设计将会运行的年龄,你需要显示一些文字如果找不到
答案 3 :(得分:0)
您应该能够使用?:三元运算符,它充当简单的if / then-like表达式。这将评估第一个学期(在?之前)。如果它的计算结果为true,则表达式为?退回。如果计算结果为false,则返回:之后的表达式。
所以{{::(person.errorCode ? person.errorCode : person.age)}}
应该有用,因为我还没有测试过它。
答案 4 :(得分:0)
使用ng-if打印或不打印col和colspan以防止空白空间
<tr ng-repeat="person in persons" ng-class="...">
<td colspan="{{!person.errorCode ? '1' : '2'}}">{{::person.name}}</td>
<td ng-if="!person.errorCode" >{{::person.age}}</td>
</tr>
答案 5 :(得分:0)
试试这个 -
<tr ng-repeat="person in persons" ng-class="...">
<td>{{person.name}}</td>
<td ng-if="!person.errorCode">{{person.age}}</td>
<td ng-if="person.errorCode">{{person.errorCode}}</td>
</tr>
答案 6 :(得分:0)
使用此代码以使其正常工作
<tr ng-repeat="person in persons" ng-class="...">
<td>{{person.name}}</td>
<td>{{person.errorcode==""?person.age:person.errorcode}}</td>
</tr>
答案 7 :(得分:0)