es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué no se supone que debemos mezclar código DOM con código Angular?

Estoy diseñando una cuadrícula principal y secundaria en la que, al hacer clic en una fila de la cuadrícula principal, los datos en la cuadrícula secundaria cambian en consecuencia. Para hacerlo, después de hacer clic en una fila de la cuadrícula principal, llamo a reloadItems() desde el controlador secundario de la siguiente manera:

$("#masterTable tbody").on("click", "tr", function (event) {
    event.preventDefault();
    jQuery(this).addClass('selected').siblings().removeClass('selected');
    angular.element($('#childTable')).scope().reloadItems();
});

Sin embargo, descubrí que mezclar código DOM con código Angular no es una buena práctica, pero no sé qué problema podría causar este fragmento de código.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Mezclar código del DOM con código de Angular puede causar varios problemas, como romper el ciclo de digestión de Angular, lo cual puede resultar en inconsistencias entre la vista y el modelo. También puede hacer que el código sea más difícil de mantener y depurar, además de menos probado. En su lugar, se recomienda utilizar la enlace de datos y directivas de Angular para manipular el DOM. Una solución al problema descrito anteriormente sería usar la directiva ng-click de Angular en las filas de la tabla principal, y enlazar la fila seleccionada a una variable en el controlador. Luego, en el controlador secundario, puedes observar los cambios en esta variable y volver a cargar los elementos en consecuencia. Este enfoque mantendría el código de Angular separado del código del DOM y haría que la aplicación sea más robusta y fácil de mantener.

Comments are closed.