Tengo dos array de objetos
que son alimentados por un mismo rest
, uno alimenta un listado visual y el otro mantiene los datos originales traídos en la respuesta.
Tengo un input
de tipo text
que se utiliza como buscador del listado por cualquier propiedad que contengan los objetos.
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $filter) {
$scope.actividadesShow = [{
id: 1,
nombre: 'Actividad 1',
codigo: 89466,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 2',
codigo: 89714,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 3',
codigo: 89755,
responsable: 'Bender'
}];
$scope.actividades = [{
id: 1,
nombre: 'Actividad 1',
codigo: 089466,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 2',
codigo: 089714,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 3',
codigo: 089755,
responsable: 'Juan'
}];
$scope.$watch('buscarActividad', function(value){
if (value != undefined) {
$scope.actividadesShow = $filter('filter')($scope.actividades, value);
}
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<input type="text" ng-model="buscarActividad">
<ul>
<li ng-repeat="actividad in actividadesShow track by $index">
{{ actividad.codigo }} - {{ actividad.nombre }}
</li>
</ul>
</div>
Así el sistema funciona correctamente, puedo buscar por responsable y me muestra los que son del responsable asignado.
El problema es que necesito hacer un buscador que busque por múltiples valores separados por comas y es ahí donde no se como hacerlo, intenté pasando un array
al $filter
pero no sirvió y por mas que busco en google no entiendo las soluciones que proponen o son soluciones demasiado extensas .
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $filter) {
$scope.actividadesShow = [{
id: 1,
nombre: 'Actividad 1',
codigo: 89466,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 2',
codigo: 89714,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 3',
codigo: 89755,
responsable: 'Bender'
}];
$scope.actividades = [{
id: 1,
nombre: 'Actividad 1',
codigo: 089466,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 2',
codigo: 089714,
responsable: 'Bender'
}, {
id: 1,
nombre: 'Actividad 3',
codigo: 089755,
responsable: 'Juan'
}];
$scope.$watch('buscarActividad', function(value){
if (value != undefined) {
$scope.actividadesShow = $filter('filter')($scope.actividades, value.split(', '));
}
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<input type="text" ng-model="buscarActividad">
<ul>
<li ng-repeat="actividad in actividadesShow track by $index">
{{ actividad.codigo }} - {{ actividad.nombre }}
</li>
</ul>
</div>
Entonces como puedo pasarle varios valores al filtro? Si es posible o debo usar otros métodos?