Javascript AngularJS多重滤波器

Javascript AngularJS多重滤波器,javascript,angularjs,Javascript,Angularjs,我有一个订单列表和一个下拉列表,可以根据订单状态过滤订单。状态为:未交付、完全交付和部分交付。过滤可以很好地处理这3个选项,但是我想实现一个额外的选项,同时显示未交付和部分交付的订单 <select class="form-control" id="status" ng-model="orderFilter.status" ng-init="orderFilter.status = '_'"> <option value="_">all</o

我有一个订单列表和一个下拉列表,可以根据订单状态过滤订单。状态为:未交付、完全交付和部分交付。过滤可以很好地处理这3个选项,但是我想实现一个额外的选项,同时显示未交付和部分交付的订单

<select class="form-control" id="status" ng-model="orderFilter.status"
        ng-init="orderFilter.status = '_'">
    <option value="_">all</option>
    <option value="_not" class="text-danger">not delivered</option>
    <option value="_part" class="text-info">partially delivered</option>
    <option value="n-p" class="text-warning">not and partial</option>
    <option value="_done" class="text-success">delivered</option>
</select>
因此,我添加了一个新的自定义值,它的工作方式是,复制一个或另一个对象,这是不好的,冗余的,不是我想要的

我想可能会有这样的情况:

<option value="_not || _part" class="text-warning">not and partial</option>
过滤部分:

<tr ng-repeat="s in vm.sales | filter: orderFilter">
    <td>...</td>
</tr>

最好的解决方案是编写自己的筛选器,如果出于某种原因不想这样做,则可以通过编程筛选列表并根据所选值更新列表:

<select class="form-control" ng-change="filterSales()" id="status" ng-model="orderFilter.status"
    ng-init="orderFilter.status = '_'">
    <option value="_">all</option>
    <option value="_not" class="text-danger">not delivered</option>
    <option value="_part" class="text-info">partially delivered</option>
    <option value="n-p" class="text-warning">not and partial</option>
    <option value="_done" class="text-success">delivered</option>
</select>
在您的html中,您可以删除过滤器之外的内容

<tr ng-repeat="s in filteredList>
   <td>...</td>
</tr>

很抱歉,我没有时间测试代码,但我希望您理解我的想法。

如果您可能的状态不改变,您可以使用_“完成”作为选项值,将过滤掉“完成但不保留”和“部分”

var app=angular.moduleapp,[]; app.controllercontroller,功能$scope{ $scope.orderFilter={ 地位:_ }; $scope.sales=[{ 状态:_不是, 项目:不是 }, { 状态:_部分, 项目:部分 }, { 状态:_完成, 项目:完成 } ]; }; 全部的 未交付 部分交付 不偏不倚 交付 {{orderFilter}} {{s.item}}
<tr ng-repeat="s in filteredList>
   <td>...</td>
</tr>