2017-02-13 27 views
0

我有一系列的3選擇刪除在其他領域中選擇的選項。除了這個問題這個Angular過濾器爲什麼會被應用到LIKE ID?

Plunker

<label>Choice 1</label> 
<select ng-model="food.fruitOne" 
     ng-options="fruit.id as fruit.name for fruit in fruits | filter:food.fruitTwo!=''?{id: '!' + food.fruitTwo}:{} | filter:food.fruitThree!=''? {id: '!' + food.fruitThree}:{}"> 
    <option value=""></option> 
</select> 
<label>Choice 2</label> 
<select ng-model="food.fruitTwo" 
     ng-options="fruit.id as fruit.name for fruit in fruits | filter: food.fruitOne!=''?{id: '!' + food.fruitOne}:{} | filter: food.fruitThree!=''?{id: '!' + food.fruitThree}:{}"> 
    <option value=""></option> 
</select> 
<label>Choice 3</label> 
<select ng-model="food.fruitThree" 
     ng-options="fruit.id as fruit.name for fruit in fruits | filter: food.fruitOne!=''?{id: '!' + food.fruitOne}:{} | filter: food.fruitTwo!=''?{id: '!' + food.fruitTwo}:{}"> 
    <option value=""></option> 
</select> 

偉大工程;

它似乎過濾像id。因此,如果選擇1,則具有1x id的項目也會從隨後的選擇中過濾。與其他類似的ID相同 - 2 & 2x。

顯然我沒有足夠明確。少了什麼東西?

謝謝!

+2

https://plnkr.co/edit/gzuhYYX2P1Wd0OtfLgOU?p=preview – maurycy

+0

謝謝@maurycy,will給那個旋轉。 – RushVan

+0

這是謝謝朋友! – RushVan

回答

1

過濾器可以接受功能,因爲你必須處理3種不同情況下

$scope.filterFruitsA = function(val) { 
    return val.id !== val.id !== $scope.food.fruitTwo && val.id !== $scope.food.fruitThree 
    } 
    $scope.filterFruitsB = function(val) { 
    return val.id !== $scope.food.fruitOne && val.id !== $scope.food.fruitThree 
    } 
    $scope.filterFruitsC = function(val) { 
    return val.id !== $scope.food.fruitOne && val.id !== $scope.food.fruitTwo 
    } 

鏈接到工作plunker這可能是你的情況非常有用https://plnkr.co/edit/gzuhYYX2P1Wd0OtfLgOU?p=preview

我敢肯定,它可以在完成聰明的方式,但在當天的那個時間我想不出任何事情,我會嘗試明天再次回顧這個問題

相關問題