2016-05-19 17 views
-1

Ich habe versucht, ein Array programmatisch mit dem Winkelfilter $filter('filter') zu filtern. Ich möchte in zwei Eigenschaften filtern, aber ich möchte, dass das Ergebnis in einer Eigenschaft und/oder einer anderen Eigenschaft suchen.Winkelfilter nach Eigenschaft ODER eine andere Eigenschaft

dieses Array verwenden

[{ 
    id:1, 
    name:'User2', 
    rut:'22.222.222-2', 
    created_at:'2016-03-23T18:36:34.404Z', 
    updated_at:'2016-03-23T18:36:34.404Z', 
    role_id:1}, 

    { 
    id:2, 
    name:'User1', 
    rut:'11.111.111-1', 
    created_at:'2016-03-23T18:36:34.416Z', 
    updated_at:'2016-03-23T18:36:34.416Z', 
    role_id:3} 
]; 

Wenn ich die Zeichenfolge mit Suche "2016" i das gesamte Array erhalten, weil meine Filter-Suche in alle Eigenschaften, ich brauche, wenn ich in den Eigenschaften zu suchen, suchen name ODER rut.

Dieses es ist meine Funktion, dass die Suche:

vm.usersList = angular.copy(UsersResolve); 

function search(_searchString){ 
    vm.usersList = $filter('filter')(UsersResolve, {$: _searchString}) 
            : UsersResolve; 
} 

Antwort

1

$ Filter ('Filter') (array, Expression Komparator)

Der Ausdruck Argument kann ein function(value, index, array) {} sein. Sie können dies verwenden, um das Array herauszufiltern.

var searchString = '2016'; 
vm.usersList = $filter('filter')(UserResolve, function(value, index, array){ 
    if(value.name == searchString || value.rut == searchString) { 
     return true; 
    }  
    }); 

Siehe hierzu Plunker.

1

So etwas wie dies funktionieren sollte. Sie können es möglicherweise an $ filter anpassen.

function search(_searchString){ 
    vm.usersList = vm.usersList.filter(function(user) { 
     return user.name.indexOf(_searchString) >-1 || user.rut.indexOf(_searchString) 
    } 
} 
Verwandte Themen