Estou com o seguinte problema. Preciso filtrar um json que recebo de um ws rest.
O código abaixo é apenas um modelo para teste.
Acredito que o problema esteja na função subCategoriasFilter e não estou conseguindo solucionar.
Quando teste a função com um json simples ( sem sub nós ) funciona bem. Agora desta maneira não obtive sucesso.
Agradeço qualquer ajuda ou alternativa para fazer este tipo de filtragem.
Controller
$scope.produtos =[{
codigo: 1,
descricao: "Cerveja",
subCategorias: [{
codigo: 1,
descricao: "Brahma"
},{
codigo: 2,
descricao: "Skol"
}]
},{
codigo: 2,
descricao: "Refrigerante",
subCategorias: [{
codigo: 1,
descricao: "Coca"
},{
codigo: 2,
descricao: "Guaraná"
}]
}];
$scope.filtroIncludes = [];
$scope.includeFilter = function(filter) {
var i = $.inArray(filter, $scope.filtroIncludes);
if (i > -1) {
$scope.filtroIncludes.splice(i, 1);
} else {
$scope.filtroIncludes.push(filter);
}
}
$scope.subCategoriasFilter = function(produto) {
if ($scope.filtroIncludes.length > 0) {
for(var i = 1; i < produto.subCategorias.length; i++) {
if ($.inArray(produto.subCategorias[i].descricao, $scope.filtroIncludes) < 0)
return;
}
}
return produto;
}
View
<input type="checkbox" ng-click="includeFilter('Coca')"/> Coca</br/>
<input type="checkbox" ng-click="includeFilter('Guaraná')"/> Guaraná</br/>
<input type="checkbox" ng-click="includeFilter('Skol')"/> Skol</br/>
<input type="checkbox" ng-click="includeFilter('Brahma')"/> Brahma</br/>
<ul ng-repeat="produto in produtos | filter:subCategoriasFilter">
<li ng-repeat="subCategoria in produto.subCategorias">
{{produto.descricao}} - {{subCategoria.descricao}}
</li>
</ul>
Filter dump: {{filtroIncludes}}