Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

filter/resume deep

Bom dia Professor. Tudo bem ?

Estou em duvida em como fazer um "deep" filter ou resume de um array no vue.js

Por exemplo. Eu criei um computed chamado countAll() onde minha intenção é pegar todos os values e somar. Acontece que se eu fizer um simples resume ele vai pegar apenas a primeira camada e não vai pegar o restante.

Eu vi que é necessario usar uma função recursiva para percorrer dentro dos itens. Essa função é correto fazer dentro do computed ? ou tenho que criar essa função no methods e meu computed chama ela ?

O array é +/- assim:

"People": [
        {
            "id": "12",
            "parentId": "0",
            "text": "Man",
            "value": 10,
            "children": [
                {
                    "id": "6",
                    "parentId": "12",
                    "text": "Boy",
                    "value": 20,
                    "children": null
                },
                {
                    "id": "7",
                    "parentId": "12",
                    "text": "Other",
                    "value": 25,
                    "children": null
                }   
            ]
        },
        {
            "id": "9",
            "parentId": "0",
            "text": "Woman",
            "value": 19,
            "children":
            {

                "id": "11",
                "parentId": "9",
                "text": "Girl",
                "value": 21,
                "children": null
            }
        }
    ]
4 respostas

Pode ser na computed. Mas se o valor não vai mudar enquanto o usuário estiver na página pode fazer assim que seu componente é carregado na função created e acessa-la como uma propriedade data. O restante é lógica de programação.

Perfeito Flavio.

Deixarei a função na computed porque volta e meia ela vai mudar.

Agora estou sofrendo para ajustar o filter nesses dados.. Como você faria para pesquisar o "text": "Girl" por exemplo ? Como você faria para trazer o item "pai" tambem ?

Flavio, eu não sei se ficou claro...

Eu criei um exemplo no fiddle https://jsfiddle.net/rodrigorrch/mmf0s473/

Eu ate estou conseguindo filtrar. (fiz o computed filterlist para exemplo) Mas o problema é quando eu vou filtrar por "wat 456" perceba que o correto é aparecer apenas a tree: child folder 1.1 > child folder 2 > wat 456 e o restante some.

Poderia me ajudar com o codigo/logica ?! ^^

Abraço

EDIT: Exemplo: http://imgur.com/M9PJ2GP

solução!

Resolvido..

O filter considera [] como true. Tive ajustar isso

Vlw

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software