优化AngularJS ngHide属性

时间:2014-10-17 18:19:10

标签: javascript angularjs angularjs-ng-repeat

 <span ng-hide="(getStatusIcon(inactive.currentStatus.code).statusDesc) =='Expired' ||
                (getStatusIcon(inactive.currentStatus.code).statusDesc) =='Rejected' ||
                (getStatusIcon(inactive.currentStatus.code).statusDesc) =='Refused'">
 PO# [[inactive.poNumber]] 
 </span>

我想优化代码 如果getStatusIcon(inactive.currentStatus.code).statusDesc是(已过期,拒绝被拒绝) 我们正在隐藏span标签。现在我们正在调用该函数3次。 有没有办法检查getStatusIcon(inactive.currentStatus.code).statusDesc in(已过期,拒绝拒绝)。 仅调用该函数一次。

1 个答案:

答案 0 :(得分:1)

您可以使用ng-init仅调用一次函数:

  <span ng-init="statusDesc = getStatusIcon(inactive.currentStatus.code).statusDesc" 
        ng-hide="(statusDesc) =='Expired' || 
                 (statusDesc) =='Rejected' || 
                 (statusDesc) =='Refused'">
  PO# [[inactive.poNumber]] 
  </span>

然后你应该将你的比较放在控制器中。

<span ng-init="statusDesc = getStatusIcon(inactive.currentStatus.code).statusDesc" 
      ng-hide="isInvalidStatusDesc(statusDesc)">
PO# {{inactive.poNumber}}
</span>

function mainCtrl($scope) {
    $scope.isInvalidStatusDesc = function(statusDesc) {
      switch (statusDesc) {
        case 'Expired':
        case 'Rejected':
        case 'Refused':
          return true;
        default:
          return false;
      }
    }; 
}