-
Notifications
You must be signed in to change notification settings - Fork 2
Expresiones
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
odocument
. -
nulo
,verdadero
ov
,falso
of
. -
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 decontrolador
, 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
uobjeto
, ver a continuación. -
item
, como alias deobjeto
. -
val
ovalor
El valor actual del componente, si corresponde (campos, Buscador). -
componente
Instancia del componente. -
controlador
ycomponentes
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).
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}
, dondepropiedad
contiene una función, devolverá un bind a esa función conobjeto
como valor dethis
. Esto intenta emular el comportamiento esperado de ejecutarobjeto.propiedad()
. - Si se utiliza un operador ternario, debe mantenerse simple.
{condicion?objeto.propiedadA:objeto2.propiedadB}
tendrá como valor dethis
cualquiera sea el resultado de la expresióncondicion?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 dethis
. - Cuando se ingrese una expresión en una propiedad dentro del editor de vista, deben utilizarse únicamente comillas simples (
'
) y evitarse las dobles ("
).
¿Probaste Foxtrot? Contanos qué te pareció 🥰 contacto@foxtrot.ar
Índice
Primeros pasos
Gestor de aplicaciones
Editor de vistas
Componentes
Módulos
Comunicación cliente<->servidor
Modelo de datos - ORM
PHPDOC
JSDOC
☝ Comentarios
🤷♂️ Dudas
🤓 Ayuda
⌨ Contribuciones
Escribinos: contacto@foxtrot.ar