2014-10-17 41 views
0
<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是(過期,拒絕拒絕) 我們都躲在跨度標籤。現在我們正在調用這個函數3次。 有沒有辦法在(過期,拒絕拒絕)中檢查getStatusIcon(inactive.currentStatus.code).statusDesc。 只能調用一次該功能。優化AngularJS ngHide屬性

+0

寫一個JS函數在控制器中執行它。 – 2014-10-18 13:29:37

+0

你的代碼是不可讀的,嘗試重新組織它在多行(你也可以通過這樣做來解決你的問題)。 – 2014-10-18 14:20:15

回答

1

可以使用NG-init進程只調用函數一次:

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

然後你應該把你的comparsions控制器。

<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; 
     } 
    }; 
}