Diferencia entre revisiones de «Usuario:ManuelRomero/JavaScript1»
De WikiEducator
(→Cambio de contexto en vue) |
(→Cambio de contexto en vue) |
||
Línea 32: | Línea 32: | ||
this.filas.data.sort((a, b)=> | this.filas.data.sort((a, b)=> | ||
this.ascendente[campo]? | this.ascendente[campo]? | ||
− | + | String(a[campo]).localeCompare(String(b[campo])) : | |
− | + | String(b[campo]).localeCompare(String(a[campo])) | |
</source> | </source> | ||
Línea 40: | Línea 40: | ||
this.filas.data.sort(function (a, b){ | this.filas.data.sort(function (a, b){ | ||
if (this.ascendente[campo]===true) | if (this.ascendente[campo]===true) | ||
− | return String(a[campo].localeCompare(b[campo])); | + | return String(a[campo]).localeCompare(String(b[campo])); |
else | else | ||
− | return String(b[campo].localeCompare(a[campo]))}); | + | return String(b[campo]).localeCompare(String(a[campo]))}); |
</source> | </source> | ||
*Y es por que se pierde el contexto de this dentro del método sort, para conseguir el objetivo, tendría que perservar dicho contexto en otra variable | *Y es por que se pierde el contexto de this dentro del método sort, para conseguir el objetivo, tendría que perservar dicho contexto en otra variable | ||
Línea 50: | Línea 50: | ||
this.filas.data.sort(function (a, b){ | this.filas.data.sort(function (a, b){ | ||
if (self.ascendente[campo]===true) | if (self.ascendente[campo]===true) | ||
− | + | return String(a[campo]).localeCompare(String(b[campo])); | |
else | else | ||
− | return String(b[campo].localeCompare(a[campo]))}); | + | return String(b[campo]).localeCompare(String(a[campo]))}); |
</source> | </source> |
Revisión de 21:47 8 jul 2023
|
- Librerías de javascript para gráficos
https://ourcodeworld.co/articulos/leer/159/top-5-las-mejores-bibliotecas-de-javascript-de-diagramas-gratuitos https://ingenieriadesoftware.es/10-librerias-javascript-dibujar-diagramas/
https://www.youtube.com/watch?v=RqQ1d1qEWlE
Cuestiones para tener en cuenta
Cambio de contexto en vue
- Usando vue, tengo accesible this en toda la sección.
- Se puede perder el contesto cuando se intenta accedere a él en un método de otra función
- Si esa función es una función flecha el contexto se mantiene.
- Esta es una sección de código donde se puede reproduce esta situación
//ascendente es una variable booleana que me indica cómo quiero ordenar (ascendente o descendente) // además se usa con una directiva v-if para mostar un svg (flecha arriba o abajo) en el botón de cada campo //campo indica el nombre del campo por el que quiero ordenar //Este código funciona bien (con función flecha no pierdo el contexto de this) this.ascendente[campo] = !this.ascendente[campo]; this.filas.data.sort((a, b)=> this.ascendente[campo]? String(a[campo]).localeCompare(String(b[campo])) : String(b[campo]).localeCompare(String(a[campo]))
- Sin embargo si no uso función flecha no funcionaría
this.filas.data.sort(function (a, b){ if (this.ascendente[campo]===true) return String(a[campo]).localeCompare(String(b[campo])); else return String(b[campo]).localeCompare(String(a[campo]))});
- Y es por que se pierde el contexto de this dentro del método sort, para conseguir el objetivo, tendría que perservar dicho contexto en otra variable
- Sin embargo si no uso función flecha no funcionaría
const self = this; this.filas.data.sort(function (a, b){ if (self.ascendente[campo]===true) return String(a[campo]).localeCompare(String(b[campo])); else return String(b[campo]).localeCompare(String(a[campo]))});