ng基于列表值隐藏/显示

时间:2015-04-29 06:07:06

标签: angularjs angularjs-ng-repeat

我需要隐藏"当前的保险范围"当列表中所有封面的coverAmt为零或负值时。如果列表中的任何一个coverAmt是正值,那么我需要显示"当前保险范围"只有一次。

我试过这样的事情,但现在没有运气..!

dependencies = [
    # ('some_app', 'XXXX_some_pre-requisite_migration'),
    ('socialaccount', '0001_initial'),
]

任何人都可以帮我这个..!感谢。

3 个答案:

答案 0 :(得分:0)

首先,如果您在h4内有ng-repeat当前保险。如果您有多个正值,标题将多次出现 至于计算本身......而是在控制器中执行此操作,然后执行以下操作:

   <li ng-repeat="cover in accSummary.response.covers">
        <div class="account-detail-row">    
             {{ cover.Something }}   
        </div>
    </li>
    <h4 ng-hide="isCurrent">Current insurance cover</h4>

因此,在ajax请求/承诺的成功事件中,您可以这样做:

  var total = 0;   

  $http({    // or whatever request mechanism you're using 
     url: someURL,
     method: "POST",
     data: "{}",
     headers: { 'Content-Type': 'application/json' }
  })
  .success(function (data) {  
     angular.forEach(data.accSummary, function(value, key) {
         total += data.accSummary["coverAmt"]
     })
  })
  .finally(function() {     
     $scope.isCurrent = total <= 0;        
  })

或者您可以创建一个函数,然后从视图中传递整个集合。

您的计算功能可能如下所示:

$scope.isCurrent = function(covers) {
     var total = 0;
     for(var i = 0; i < covers.length; i++){
         var cover = covers[i];
         total += cover.coverAmt;
     }
     return total <= 0;
  }

然后用法是用法:

 <h4 ng-hide="isCurrent(accSummary.response.covers)">Current insurance cover</h4>

答案 1 :(得分:0)

尝试使用```ng-if``来控制当前保险保障的可见性。但是在ng-repeat的init上,运行一个循环遍历数组的调用来测试你的情况。

下面是一个示例:

<强> HTML:

<li ng-repeat="cover in accSummary.response.covers" ng-init="checkCover()">
    <div class="account-detail-row col-xs-12 col-sm-12 col-md-12 padding-left12 padding-right12 padding-top24 padding-bottom12">
        <h4 class="font-16 fontwt-400" ng-if="visible">Current insurance cover</h4>
    </div>
</li>

<强> JS:

$scope.visible = false;

$scope.checkCover = function() {
  angular.forEach(accSummary.response.covers, function(cover) {
    if(cover.coverAmt > 0) { $scope.visible = true; return true; }
  }
  return false;
}

答案 2 :(得分:0)

您必须在控制器中计算如下:

app.controller("cover", function($scope){
   $scope.covers = [{coverAmt: 10},{coverAmt: 0},{coverAmt: -1}];

   $scope.showHeading = function(){
   var flag = false;
   for(var i=0; i<$scope.covers.length; i++)
   {
      if($scope.covers[i].coverAmount > 0)
      {
         flag =  true;
         break;
       }
    }
    return flag;
 };   
});

HTML将

  <h4 class="font-16 fontwt-400" ng-show="showHeading();">Current insurance cover</h4>