AngularJS $filter im controller mit oder Bedingung für das gleiche Attribut

controller:

var myApp = angular.module('myApp', []);

myApp.controller('myCtrl', ['$scope', '$filter', function($scope, $filter){

    $scope.tickets = [
                      {title : 'ticket1', assignee : {id:'pratap', name: 'PRATAP'}},
                      {title : 'ticket2', assignee : null},
                      {title : 'ticket3', assignee : {id:'ak', name: 'AK'}}
                      ];    

    $scope.defaultOption = 1;
    $scope.options = [
                      {id:1, name : 'MY TICKETS'},
                      {id:2, name : 'OTHERS TICKET'}
                      ];

    $scope.filteredTicket = [];

    $scope.filterData = function(criteria) {
        if (criteria == 1) {
            $scope.filteredTicket = $filter('filter')($scope.tickets, {assignee: {id:'pratap'}});
        } else {
            $scope.filteredTicket = $filter('filter')($scope.tickets, {assignee: null, assignee: {id:'ak'}});
            console.log($scope.filteredTicket);
        }


    };

    $scope.filterData($scope.defaultOption);

}]);

HTML:

<div ng-controller="myCtrl">
<div>Current User: pratap</div>
<div>
    FILTER: <select ng-model="defaultOption" ng-change="filterData(defaultOption)" ng-options="option.id as option.name for option in options"></select>
</div>
    <div>
        <h1>Tickets</h1>
        <ul>
            <li ng-repeat="ticket in filteredTicket">{{ticket.title}}</li>
        </ul>
    </div>  
</div>  

Ich würde gerne wissen, ob es möglich ist, verwenden Sie das gleiche Objekt-Attribut-form oder Zustand $filter, so etwas wie unten

$scope.filteredTicket = $filter('filter')($scope.tickets, {assignee: null, assignee: {id:'ak'}});

so, dass ich sowohl Objekt, das die Bearbeiter:null und Bearbeiter:'ak'. Wenn ich wählen Sie die ANDEREN TICKETS, die ich brauche, um dispplay ticket2 und ticket3, aber jetzt bin ich immer nur ticket3.

Kann jemand bitte helfen????

Erstellt-Plunker-Hier

  • Sie können nicht zwei gleiche param im selben Objekt; Sie müssen schreiben Sie Ihre filter, um sich für ein array der Zessionar Bedingungen statt: {assignee: [null,{id: 'ak'}]}
  • Wenn ich dies Tue, erhalte ich leeres array zurück
  • {assignee: foo, assignee: bar} ist nicht eine gültige Struktur, ist das, was ich sage: die redundante params überschreiben sich gegenseitig.
InformationsquelleAutor Pratap A.K | 2016-02-02
Schreibe einen Kommentar