2016-06-14 88 views
0

我正在使用ng-options來遍歷我的對象數組,並向視圖顯示正確的狀態列表以及將所需的綁定到模型。在選擇下拉列表中使用ng選項ng-show

該視圖可以在任何給定時間處於兩種狀態,一種是已經具有值的空workOrder或workOrder。

現在我想在workOrder狀態爲「A」或「活動」狀態的情況下,「關閉」和「處理」狀態不會顯示在下拉列表中。

我想爲此使用ng-show,但也想知道是否有更合適的解決方法。

我的對象:

workOrder.statuses = [ 
     { 
      'Status': 'Open', 
      'Code': 'O', 
      'Show': true 
     }, 
     { 
      'Status': 'Active', 
      'Code': 'A', 
      'Show': true 
     }, 
     { 
      'Status': 'Processing', 
      'Code': 'P', 
      'Show': true 
     }, 
     { 
      'Status': 'Closed', 
      'Code': 'C', 
      'Show': true 
     } 
    ]; 

我的HTML上我使用:

<select title="Status" class="form-control" id="ddlStatus" 
        ng-options="status.Code as status.Status for status in ctrl.statuses" 
        ng-model="ctrl.model.Status"> 
</select> 

我遇到問題就試圖讓這個工作,似乎沒有任何工作,並通過StackOverflow的搜索我無法找到一個堅實的答案。

任何幫助非常感謝!

回答

1

首先,你可以篩選你的選擇數組是這樣的:

<li ng-repeat="status.Code as status.Status for status in ctrl.statuses | filter : {Status: 'Open'}: true"> 

所有第二,你可以填充select像這樣

<select name="repeatSelect" id="repeatSelect" ng-model="data.repeatSelect"> 
    <option ng-repeat="option in data.availableOptions" value="{{option.id}}">{{option.name}}</option> 
</select> 

的選項,以便您可以指定有'ng-if'隱藏你不想顯示的狀態選項

更新:

所以,你可以使用過濾器:

<option ng-repeat="status in ctrl.statuses | filter : {Status: '!' + ctrl.model.Status}: true" value='{{status.Code}}'>{{status.Status}}</option> 

或者,如果你不想使用NG重複,您可以在選定的狀態改變只是過濾器的選項數組中的範圍。

+0

我寧願使用ng-options代替ng-repeat。這還不能回答我的問題。我的結果非常完美,與預期一致。我只希望能夠知道當前模型返回時具有「活動」狀態,並隱藏不需要在下拉選項中的選項 – Keeano

+0

我忘記標記@Markiyan Harbych – Keeano

+0

您能指定什麼意思是 - '回來'? –

相關問題