Olá, boa tarde a todos,
Criei um pequeno sistema pra filtrar diferentes tipos de usuários cadastrados em um site utilizando facetas (filtros) como os encontrados em algumas lojas virtuais (por exemplo, quando procuramos por notebooks e podemos refinar a pesquisa pela marca, tamanho de tela, sistema operacional, preço, etc).
Existem duas situações nesse sistema: uma que filtra pelo tipo de usuário (que pode ser um profissional, uma empresa ou uma academia), e outra q filtra pela área de atuação desses usuários. Segue um JSON para uma breve ilustração dos usuários:
[{ nome: "Maria de Souza Silva", tipo: "Profissionais", atuacao: "Educação Física, Fitness (academia)", estado: "PR" }, { nome: "Sup Suplementos", tipo: "Empresas", atuacao: "", estado: "SP" }, { nome: "Fulano de Tal", tipo: "Profissionais", atuacao: "Beleza / Estética", estado: "MT" }, { nome: "Training Academia", tipo: "Academias", atuacao: "", estado: "PR" }, { nome: "Sicrano de Moraes", tipo: "Profissionais", atuacao: "Beleza / Estética", estado: "SP" }];
O filtro por tipo está ok, mas estou com dificuldades em criar o filtro por área de atuação.
Por se tratar de uma propriedade com multiplos valores (veja a Maria de Souza Silva, que atua nas áreas 'Educação Física' e 'Fitness (academia)', faço um Split pela virgula para criar os itens da faceta e depois, usando indexOf, vejo se esse item se encontra na propriedade 'atuacao'.
Acontece que, apesar de conseguir o retorno de um objeto contendo apenas os usuários cuja atuação combina com o filtro, esse objeto não atualiza o HTML corretamente. Já filtro por tipo retorna um objeto identico e atualiza a View corretamente. Alguém poderia, por favor, me explicar onde estou errando?
Segue link para que possam vê-lo em funcionamento (ou em não-funcionamento....):
http://plnkr.co/edit/lJoK2OOvgvdME0QaGcEN?p=preview
Desde já agradeço a ajuda!