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

Expresiones

Gabriel edited this page Jun 1, 2021 · 6 revisions

Documentación:


Las expresiones son sentencias JavaScript (acepta cualquier sentencia JavaScript válida en modo estrícto) que se pueden embeber dentro de una cadena, delimitadas por {...}, para ser reemplazadas en forma dinámica por el resultado de su ejecución, siempre que su el mismo sea también una cadena o un número.

Un intérprete de expresiones permite ejecutar y reemplazar las expresiones en forma segura. Es posible utilizar el intérprete manualmente (ver JSDOC), pero la mayoría de las propiedades de los componentes, lo implementan automáticamente, de forma tal que se puedan embeber valores dinámicos entre los valores de las propiedades.

Las expresiones se definen encerradas entre llaves {...} y tienen acceso al ámbito global y a variables locales específicas.

Notas:

  • Las llaves pueden escaparse con \.
  • Una cadena puede contener texto y expresiones, como así también múltiples expresiones, por ejemplo: "Hola {objeto.nombre}".
  • Si el valor de una propiedad es únicamente una expresión, igual requiere las llaves ("{expresion}").

Los siguientes símbolos están definidos en todas las expresiones:

  • Variables globales, como ui, util, window o document.
  • nulo, verdadero o v, falso o f.
  • aplicacion Instancia del controlador de la aplicación.
  • parametros Parámetros de la URL (GET).
  • controlador Instancia del controlador de la vista.
  • principal Instancia del controlador de la vista principal. A diferencia de controlador, cuando se trabaje con vistas embebibles, este será siempre el de la vista principal.
  • componentes Instancias de los componentes de la vista principal.

Los siguientes símbolos están definidos en las expresiones dentro de propiedades de componentes:

  • obj u objeto, ver a continuación.
  • item, como alias de objeto.
  • val o valor El valor actual del componente, si corresponde (campos, Buscador).
  • componente Instancia del componente.
  • controlador y componentes Corresponderán siempre a la vista a la que pertenece el componente (recordemos que puede existir más de una vista a la vez).

En los componentes que trabajen con un origen de datos, item, obj y objeto (alias del mismo valor) tendrán asignado el mismo. En aquellos que funcionen como bucles (Tabla, Bucle, Buscador, Desplegable, Árbol), obj / objeto será el elemento que se esté dibujando, es decir, por ejemplo, una fila de la tabla, o un item del conjunto de resultados.

Cuando se utilicen expresiones en controladores de eventos, si la expresión resuelve a una función, esta será ejecutada al producirse el evento. Por ejemplo: {aplicacion.funcion} o {window.close} (sin paréntesis). Pero si la expresión invoca una función, la misma será ejecutada al momento de evaluarse la expresión, tomando como controlador del evento el resultado de la llamada. Por ejemplo {aplicacion.funcion()} (con paréntesis).

Limitaciones y particularidades

Cualquier sentencia JavaScript es válida dentro de una expresión. Sin embargo cuando la expresión deba devolver una función presenta algunas limitaciones, a saber:

  • Cuando la función se obtenga de un objeto, el intérprete intentará mantener como valor de this el objeto en cuyo miembro se almacena la función. Por ejemplo: {objeto.propiedad}, donde propiedad contiene una función, devolverá un bind a esa función con objeto como valor de this. Esto intenta emular el comportamiento esperado de ejecutar objeto.propiedad().
  • Si se utiliza un operador ternario, debe mantenerse simple. {condicion?objeto.propiedadA:objeto2.propiedadB} tendrá como valor de this cualquiera sea el resultado de la expresión condicion?objeto:objeto2, es decir, realizará el proceso descripto en el punto 1 por cada miembro de la expresión ternaria (expcepto la condición).
  • Una expresión sin ., o si no es posible resolver lo descripto en los puntos anteriores, ya sea por una excepción o porque el valor no es válido, el bind devuelto tendrá window como valor de this.
  • Cuando se ingrese una expresión en una propiedad dentro del editor de vista, deben utilizarse únicamente comillas simples (') y evitarse las dobles (").
Clone this wiki locally