Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

247
Visualizações
Tabulador: formateador: "enlace" evita que se ejecute el mutador

bastante nuevo en el uso de tabulador, pero realmente me encanta por lo que he visto hasta ahora. Desafortunadamente, estoy atascado con el siguiente problema: quiero calcular la suma de algunas de las celdas en cada fila. Logró esto mediante el uso de un mutador. Además, el mutador también se activa después de que el usuario edita una celda mediante el uso de cellEdited con una función que usa row.update(). Todo funciona bien hasta que agrego un formateador: "enlace" a una de las columnas. De alguna manera, la generación de enlaces evita que el mutador funcione. Creo que esto tiene que ver con la secuencia de devoluciones de llamada, pero como todavía sé un poco sobre tabulador y js, eso es solo una suposición.

Aquí está mi generador de tablas (abreviado):

 var table var tabledata = table_data var choices = [0, 1, 2, 3] var getUrl = function(cell){ var url_id = cell.getRow().getCell('id').getValue(); return "/xyz/" + url_id } var customMutatorSumCur = function(value, data, type, params, component){ return data.knowledge + data.commitment; } table = new Tabulator( "#ratings-table", { selectable:false, layout:"fitDataTable", data:tabledata, columns:[ {title:"id", field:"id", visible:false}, {title:"Name", field:"name", formatter:"link", formatterParams:{ labelField:"name", url:getUrl, }}, {title:"Knowledge", field:"knowledge", editor:"select", editorParams: {values:choices}, cellEdited:function(cell){ cell.getRow().update({points_cur:true})}}, {title:"Commitment", field:"commitment", editor:"select", editorParams:{values:choices}, cellEdited:function(cell){ cell.getRow().update({points_cur:true})}, {title:"Points", field:"points_cur", mutator:customMutatorSumCur}, ], );

El enlace generado funciona bien, el valor en el campo "Puntos" es correcto al principio, pero no se actualiza en la edición de la celda. Si omito esta parte:

 , formatter:"link", formatterParams:{ labelField:"name", url:getUrl,

el valor de "Puntos" se actualiza correctamente después de cada edición de celda, pero, por supuesto, ya no tengo un enlace. Tal vez alguien pueda indicarme la dirección correcta en la que cometí un error y pueda ayudarme a encontrar una solución...

saludos, romano

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Un formateador nunca evitará que se ejecute un mutador, son sistemas completamente separados y se llama al formateador cada vez que se actualiza un valor en esa celda.

El problema que tiene es que solo se llama al mutador en una columna cuando se actualiza su valor, en este caso, su columna mutada obtiene su valor de otras dos columnas, por lo que mientras esas columnas se actualizan, el valor mutado no es porque el mutador es no volvió a llamar.

Sugeriría llamar a la función de update en la fila de la función cellEdited en las columnas de name y knowledge , esto volverá a activar el mutador:

 cell.getRow().update({"points_cur":true})

También en una nota separada, esta línea es un poco innecesaria, no necesita recuperar la celda para obtener los datos:

 cell.getRow().getCell('id').getValue();

debería ser:

 cell.getData().id;
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda