使用ng-show AngularJS的多个条件

时间:2016-09-06 20:24:02

标签: angularjs angularjs-ng-show

我有一个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的值决定是,可能,否。

2016年9月7日更新

来自对象的数据如下:

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

3 个答案:

答案 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>