我有一个ng-repeat,它从Web服务构建一个表。我在一个单元格中渲染了6个这样的值:med:1 lab:1 pl:1
。我需要根据这6个值做出决定。我的ng-repeat
代码是这样的:
<tr ng-repeat="(pid, value) in patient|groupBy:'pid'">
<td>{{pid}}</td>
<td ng-repeat="(disease, value) in patient|groupBy:'name'">
<span ng-repeat="item in value|filterBy:['pid']:pid" ng-model="disease-conditial">
{{item.src}}:{{item.total}}
</span>
<!--This is the code that I'm trying to make to work-->
<span class="label label-danger" ng-show="
(item.src == 'med' and item.total > 0) and
(item.src == 'lab' and item.total > 0 and
(item.src == 'pl' and item.total > 0))">Yes
</span>
</td>
</tr>
请考虑这个sudo代码。我需要三个条件:
if src == med && total > 0
和
if src == lab && total > 0
和
if src == pl && total > 0
然后是
if src == med && total == 0
if src == lab && total > 0
if src == pl && total > 0
那么也许
if src == med && total == 0
if src == lab && total == 0
if src == pl && total == 0
然后否
我正在阅读有关ng-switch的信息,但此指令不支持包含动态数据的条件$scope.something == 1
Angular有没有内置指令可以实现这个目标?
单元格中的数据如下所示:
+-----------------+
|med:1 lab:1 pl:1 |
+-----------------+
我需要评估med&amp;&amp;的价值。实验室&amp;&amp; amp;的价值pl的值决定是,可能,否。
来自对象的数据如下:
Array[50]
0:Object
$$hashKey:"object:18"
name:"Alcoholism"
pid:"1"
src:"lab"
total:"1"
__proto__:Object
1:Object
$$hashKey:"object:19"
name:"Alcoholism"
pid:"1"
src:"med"
total:"1"
__proto__:Object
2:Object
$$hashKey:"object:20"
name:"Alcoholism"
pid:"1"
src:"pl"
total:"0"
__proto__:Object
再一次,方案1. if med > 0 && lab >0 && pl >0 then Yes
。场景2. if med == 0 && lab > 0 && pl > 0 then Maybe
。场景3. if med == 0 && lab == 0 && pl == 0 then No
。
答案 0 :(得分:1)
你可以像这样使用带有item.src的ng-switch:
<div class="animate-switch-container" ng-switch on="item.src" ng-show="item.total > 0">
<div ng-switch-when="med">med</div>
<div ng-switch-when="lab">lab</div>
<div ng-switch-when="pl">pl</div>
</div>
使用整个div中的ng-show将进行相同的验证。
答案 1 :(得分:0)
我认为你只是把你的条件弄错了。我在这里做了一些猜测,但我认为你要做的是:
<tr ng-repeat="(pid, value) in patient|groupBy:'pid'">
<td>{{pid}}</td>
<td ng-repeat="(disease, value) in patient|groupBy:'name'">
<span ng-repeat="item in value|filterBy:['pid']:pid" ng-model="disease-conditial">
{{item.src}}:{{item.total}}
</span>
<!--This is the code that I'm trying to make to work-->
<span class="label label-danger" ng-show="
((item.src == 'med' || item.src == 'lab' || item.src == 'pl') and item.total > 0)">
Yes
</span>
<span class="label label-danger" ng-show="
((item.src == 'med' && item.total == 0) || (item.src == 'lab' and item.total > 0) || (item.src == 'pl' and item.total > 0))">
Maybe
</span>
<span class="label label-danger" ng-show="
((item.src == 'med' || item.src == 'lab' || item.src == 'pl') and item.total == 0)">
No
</span>
</td>
</tr>
ng-show
指令不是问题,它是内部条件的问题。
答案 2 :(得分:0)
我更喜欢你从控制器获取单个值,你想在视图上显示,但ng-bind也可以帮助你渲染所需的数据
<span class="label label-danger" ng-bind="item.total>0 && (item.src === 'med' || item.src === 'lab' || item.src === 'pl')?'yes':'no'"> </span>