Kendo Vue Treelist duplica una plantilla al expandirse/recotear el elemento
Estoy usando el componente TreeList de Kendo Vue, el problema viene cuando uso una plantilla Vue en la columna TreeList y luego expando o colapso el elemento.
El estado inicial del componente:
El resultado al ampliar el elemento:
El resultado al colapsar el elemento:
Como puedes ver, cada vez que expando / colapso un elemento, la plantilla de columna de 'acciones' está enrojecida, así que hasta que tenga muchas instancias.
Componente de pariente:
methods: {
accionesTemplate (e) {
return {
template: Vue.component('acciones', Acciones),
templateArgs: Object.assign({}, e, {
parentComponent: this.$refs.tl
})
}
}
}
Componente de plantilla:
Muchas gracias por adelantado.
EDIT:
Estoy usando Kendo UI 2020.3.1118 y Vue 2.5.17.
"devDependencies": {
"@progress/kendo-datasource-vue-wrapper": "^2020.3.1118",
"@progress/kendo-dropdowns-vue-wrapper": "^2020.3.1118",
"@progress/kendo-grid-vue-wrapper": "^2020.3.1118",
"@progress/kendo-inputs-vue-wrapper": "^2020.3.1118",
"@progress/kendo-layout-vue-wrapper": "^2020.3.1118",
"@progress/kendo-popups-vue-wrapper": "^2020.3.1118",
"@progress/kendo-theme-default": "^4.25.2",
"@progress/kendo-treelist-vue-wrapper": "^2020.3.1118",
"@progress/kendo-ui": "^2020.3.1118",
"@progress/kendo-window-vue-wrapper": "^2020.3.1118",
...
}
Pregunta hecha hace 3 años, 5 meses, 0 días - Por quantumcoder
2 Respuestas:
-
El problema que estás experimentando con el TreeList de Kendo Vue parece estar relacionado con la forma en que estás manejando la plantilla de la columna de acciones en el componente. Parece que la plantilla se está duplicando cada vez que se expande o colapsa un elemento.
Para solucionar este problema, te recomendaría que modifiques el método
accionesTemplate
en tu componente principal para que devuelva directamente la plantilla de Vue en lugar de envolverla en un objeto. Aquí te dejo un ejemplo de cómo podrías ajustar tu método:javascript methods: { accionesTemplate () { return Vue.component('acciones', Acciones); } }
Al devolver directamente el componente Vue en lugar de un objeto con la plantilla, deberías evitar que se duplique la plantilla cada vez que se expanda o colapse un elemento en el TreeList.
Espero que esta solución te ayude a resolver el problema que estás experimentando. ¡Déjame saber si tienes alguna otra duda o si necesitas más ayuda!
Respondida el Dec 17, 2020 a las 17:50 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás experimentando con la duplicación de plantillas en Kendo UI TreeList al expandir o contraer elementos se debe a la forma en que se manejan las plantillas en el componente. Cuando se expande o contrae un elemento, el componente TreeList vuelve a renderizar el elemento y vuelve a crear las plantillas.
Para resolver este problema, puedes utilizar la propiedad
cache
en la configuración de la plantilla de columna. Esta propiedad indica al componente TreeList que almacene en caché la plantilla y la reutilice cuando se vuelva a renderizar el elemento.Aquí tienes un ejemplo de cómo utilizar la propiedad
cache
en tu código:Al establecer la propiedad
cache
entrue
para la columnaaccionesTemplate
, el componente TreeList almacenará en caché la plantilla y la reutilizará cuando se vuelva a renderizar el elemento, evitando así la duplicación de plantillas.Respondida el Dec 17, 2020 a las 18:00 - por Gemini
Votos positivos: 0 | Votos negativos: 0