2016-04-13 13 views
0

我有一個NG重複,看起來像這樣:過濾搜索忽略的對象,如果它丟失的信息

<div layout="row" flex layout-wrap layout-margin layout-padding> 
    <tile ng-repeat="camp in ctrl.camps | filter:{ctrl.search} track by $index"></tile> 
</div> 

ctrl.camps是一個對象數組,它看起來是這樣的:

{ 
    "id": 1, 
    "name": "Hey!", 
    "kind": "Something", 
    "variation": { 
     "type": "Smarty", 
     "color": "Blue", 
    } 
}, 
{ 
    "id": 2, 
    "name": "More Heys!", 
    "kind": "Another thing", 
    "variation": { 
     "type": "Smarty", 
     "color": "Green", 
    } 
}, 
{ 
    "id": 3, 
    "name": "Hey!", 
    "kind": "my kind", 
    "variation": { 
     "type": "Smarty" 
    }// This one doesn't have a color! 
} 

注意如何id: 3沒有變化的顏色。

現在我有md-select,看起來像這樣過濾這些:

<md-input-container> 
    <label>Variation color</label> 
    <md-select ng-model="ctrl.search.variation.color"> 
     <md-option ng-click="!null">Empty option</md-option> //I want to be able to clear this selection with the ng-click.. Not sure how. 
     <md-option ng-repeat="color in ctrl.colors" value="{{color}}">{{color}}</md-option> 
    </md-select> 
</md-input-container> 

所以這偉大工程。它過濾我的名單和一切。然而,我遇到的問題是,md-select必須有一個空的選項,以清除過濾器..當我確實選擇當前的空選項,它確實清除,但沒有顏色的變化不會再出現。

有沒有人知道我可以如何解決這個問題?我希望能夠用ng-click清除,但我需要再次顯示所有對象。謝謝。

回答

0

我有像你這樣的問題。

你應該清空你的'搜索'對象。

因爲,你的MD-選擇被清空後,它看起來像這樣:

{ 
    "variation": {color:""} 
} 

所以篩選模型是檢查不元素都有variation.color

您可以添加功能ng-change任何值這將檢查如果search.variation.color是空的,然後刪除它:delete search.variaton.color$watch$scope.search

+0

這是有幫助的,但如果我有多個'md-select's所有過濾其他東西然後你ldn't'search = {}'清除我的所有過濾器?我只是想要它清除特定的過濾器..這有道理嗎? – Katie

+1

是的,我明白。只是刪除顏色屬性:'刪除search.variation.color' –

+0

我試着'search.variation.color = {};'但我得到一個錯誤'不能設置屬性'的顏色未定義..任何想法?謝謝 – Katie