2016-10-12 114 views
0

我想提出的條件在NG-重複爲: 我的代碼是NG-如果條件NG-重複角JS

<tr ng-repeat='orders in allCurrentTakeAwayOrder' > 

</tr> 

,但我想提出條件,如果標題是外賣然後納克-repeat建議立即進行刪除其值爲從allCurrentTakeAwayOrder如果宅配然後從allcurrentHMOrder爲:

<tr ng-repeat='orders in allCurrentTakeAwayOrder if heading=Take Away or 
    orders in allcurrentHMOrder if heading=Home Delivery' > 
</tr> 
+0

或者你也可以創建自己的過濾器,你做比較值這裏並返回true或false讓ng-repeat知道他是否應該顯示被測元素。這是一個文檔鏈接:https://docs.angularjs.org/guide/filter(向下滾動,直到找到關於自定義過濾器的部分)。 – xoxel

回答

0

如果你真的想用你的NG-重複裏面的情況,我建議使用一個三元運算符,就像這樣:

<input type="checkbox" name="condition" ng-model="condition" /> 
<ul ng-init="numbers=[1,2,3];letters=['a','b','c'];"> 
    <li ng-repeat="i in (condition ? numbers : letters)"> 
    {{i}} 
    </li> 
</ul> 
+0

恕我直言,這有點複雜,你不應該爲了性能目的在你的HTML中這樣做。不是最好的答案,我建議你避免這種情況。 – xoxel

1

使它工作的最自然的方式是構建allCurrentTakeAwayOrderallcurrentHMOrder的單個集合作爲orders,並確保它的項目包含屬性類型(TakeAway/Delivery)。在這種情況下,你就可以改變你這樣的代碼:

ng-repeat="order in orders | filter:{type:heading}" 
0

定義$scope變量data$scope.data

然後在HTML:

<tr ng-repeat='orders in data' > 
    ... 
</tr> 

JS - 控制器:

$scope.data = []; 
if($scope.heading == 'Take Away') { 
    $scope.data = angular.copy(allCurrentTakeAwayOrder); 
} else if($scope.heading == 'Home Delivery') { 
    $scope.data = angular.copy(allcurrentHMOrder); 
} else { 
    // Any default code or change any one condition to incorporate in this block and remove else if 
} 
1

我已經使用ng-if in ng-repe在

<tr ng-repeat='orders in allCurrentTakeAwayOrder | filter:{type:heading}' > 
    <label ng-if="orders.heading == 'Take Away' || orders.heading == 'Home Delivery'"> 

    </label> 
</tr> 

我認爲它可以幫助你。

+0

這可能是'orders.heading',而不是簡單的'命令',他應該比較你的ng-if,除此之外,這應該工作。 – xoxel

+0

確切地說,它應該是orders.heading –

0

您可能需要爲此使用比較器。

$scope.values = ["Take Away", "Home Delivery"]; 

$scope.comparator = function(expected, actual){ 
    return actual.indexOf(expected) > -1; 
} 

<tr ng-repeat='orders in allCurrentTakeAwayOrder | filter:{heading:values}:comparator' > 

</tr> 
+0

爲什麼你需要自定義過濾器? :) –

+0

Typo。不是一個自定義的過濾器,我們可以使用比較器 – selvassn

0

請按照此link爲好問題的解決方案。

然而,對於你的情況總結如下:

<tr ng-repeat="orders in {true: allCurrentTakeAwayOrder, false:allcurrentHMOrder}[heading==='Take Away']"> 

    //Output something 

</tr> 

希望這有助於。