2016-06-14 74 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

您能指定什么意思是 - '回来'? –

相关问题