Skip to content
This repository has been archived by the owner on Oct 10, 2023. It is now read-only.

Controladores JS

Gabriel edited this page May 18, 2021 · 8 revisions

Documentación:


Eventos

Manejadores de eventos

Los manejadores de eventos pueden establecerse directamente desde el editor o desde el código del controlador mediante componentes.componente.propiedad().

Cuando se establece como cadena, los siguientes valores son posibles:

  • ir:... Navegará a la vista o a la URL especificada.
  • no-ir:... Cambiará la URL sin navegar.
  • abrir:... Abrirá la vista o la URL especificada en una nueva ventana.
  • servidor:... Invocará el método en el controlador de servidor.
  • enviar:... Invocará el método en el controlador de servidor, con los valores de todos los componentes de la vista como primer parámetro.
  • apl:... Invocará el método en el controlador de la aplicación.
  • servidor-apl:... Invocará el método en el controlador de la aplicación del lado del servidor.
  • enviar-apl:... Invocará el método en el controlador de la aplicación del lado del servidor, con los valores de todos los componentes de la vista como primer parámetro.
  • nombrecomponente:... Pasará el valor especificado al componente de nombre nombrecomponente. Cada tipo de componente determina qué hacer con ese valor (ver Componentes para más información). Esto se denomina Evento externo.
  • Expresiones: Si la expresión resuelve a una función, será ejecutada al producirse el evento, por ejemplo {aplicacion.funcion} o {window.close}, (sin paréntesis: la expresión devuelve la función). Nótese que si la expresión invoca una función (con paréntesis), la misma será ejecutada al momento de evaluarse la expresión, devolviendo el resultado de esa función, por ejemplo {aplicacion.funcion()} se ejecuta inmediatamente.
  • Nombre de método: Intentará invocar el método en el controlador de la vista, pudiendo tratarse tanto del controlador principal como del controlador de la vista embebible, según dónde se ubique el componente.

Nota: Los prefijos servidor:, servidor-apl:, enviar: y enviar-apl: desencadenan una comunicación con el servidor. Ver más sobre la comunicación cliente-servidor.

Cuando se utiliza propiedad(), el valor puede ser una función.

Se suprimirá la difusión del evento (bubbling) y la acción predeterminada cuando se encuentre un manejador válido.

Esto no quita que sea posible establecer eventos adicionales en los elementos del DOM mediante componentes.componente.obtenerElemento() y evento(), aunque no es lo ideal.

Cuando el evento sea procesado del lado del cliente, this siempre será el controlador en el cual la función de destino fue originalmente definida y esta recibirá dos argumentos: la instancia del componente y el objeto nativo del evento con las propiedades adicionales componente (instancia del mismo), nombre (nombre del evento), noDetener() (método para evitar stopPropagation()) y noPrevenirPredeterminado() (método para evitar preventDefault()). Algunos componentes pueden definir propiedades adicionales.

En los componentes de control, como Bucle, Árbol o Tabla, el origen de datos del componente corresponde al objeto del nivel donde se encuentra. Es decir, que si una tabla contiene tres objetos (tres filas), cada botón que se inserte en la fila tendrá como origen de datos el objeto correspondiente a su propia fila.

//El árbol contiene un botón con el evento Click = clickHijo
this.clickHijo=function(componente) {
    //componente = El botón
    //componente.obtenerDatos() = Objeto del item donde se está representando el botón
    ui.alerta(componente.obtenerDatos().titulo);
};

Nota para desarrolladores de componentes: Esto último también es válido para los eventos externos: eventoExterno() recibirá los mismos dos argumentos y this será la instancia del componente.

Cuando el destino del evento sea del lado del servidor, el método recibirá un único argumento con las propiedades componente (nombre del mismo), evento (nombre del evento) y vista (nombre de la misma). Excepto cuando se utilicen enviar: o enviar-apl:, los cuales enviarán dos argumentos: Un objeto con los valores de los campos y el objeto del evento.

Algunos componentes concretos pueden definir propiedades o parámetros adicionales en sus eventos.

Ver Estructura de los componentes para más información sobre cómo el componente gestiona internamente los eventos.

Métodos de eventos predefinidos

Existen diferentes métodos que son invocados en los controladores y los componentes ante determinados eventos. Estos son:

Controladores y controlador de aplicación: listo, inicializado, navegacion(nombreVista), volver*, errorServidor, tamano, fin* **.

Componentes: listo, navegacion(nombreVista), volver*, tamano, fin* **.

* Si el método devuelve true, se detendrá el evento. Sin embargo, en todos los casos, si devuelve true se detendrá la propagación del evento, aunque la acción en sí no se pueda detener.

** Por el momento, solo es invocado cuando la vista se carga dentro del componente Importar.

Más información sobre el ciclo de vida de la aplicación y el significado de los eventos.

Clone this wiki locally