Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

241
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!