使用ng-options

时间:2016-06-14 16:06:49

标签: javascript angularjs ng-options ng-show

我正在使用ng-options迭代我的对象数组,并向视图显示正确的状态列表,并将我需要的内容绑定到模型。

这个视图在任何给定时间都有两种状态,一种是空的workOrder或者已经有值的workOrder。

现在我想在workOrder返回状态为“A”或“Active”状态的情况下,“关闭”和“处理”状态不会显示在下拉列表中。

我想使用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 个答案:

答案 0 :(得分: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>

所以你可以用&#39; ng-if&#39;指定那里。隐藏您不想显示状态的选项

<强>更新

所以你可以使用过滤器:

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

或者,如果您不想使用ng-repeat,则可以在更改所选状态时过滤范围中的选项数组。