En el artículo anterior de Biding Syntax, vimos los diferentes tipos de bindings que tenemos disponibles para usar en nuestras aplicaciones SAPUI5. En este artículo entraremos a ver en detalle opción del Expression Binding.

El Expression Binding está disponible a partir de la versión 1.28 de SAPUI5 y nos permite añadir cierta lógica a nuestros bindings sin tener que usar un formatter. La sintaxis que utiliza es parecida a la de JavaScript pero solo tendremos permitidas algunas acciones. Por ejemplo:

  • Comparativas (==, ===, !=, !==, >, <, >=, <=)
  • Operaciones aritméticas (+, -, *, **, /, %, ++, –)
  • Ejecutar funciones. Siempre que estén disponibles vía “Global Symbols” como “parseFloat” o “isNaN”.

Para definir nuestra expresión tenemos dos opciones. Dependiendo del modo el tipo de binding cambiará:

  1. {= expresión}”: Con esta opción el tipo de binding será “one-way”, esto permite que cuando el valor cambie en modelo se volverá a ejecutar la expresión.
  • {:= expresión}: Con esta opción en cambio el tipo de binding utilizado será “one-time”. La expresión se ejecutará la primera vez y aunque cambie el valor del modelo está no se volverá a ejecutar.

Para acceder a cualquier dato de la capa del modelo mediante el binding, deberemos usar las siguientes opciones de sintaxis “${binding}” o “%{binding}”.

Por último, veremos algunos ejemplos de cómo utilizar el Expression Binding en una vista XML.

<Text text=”{= ${Aprobado} === true ? ${i18n>si} : ${i18n>no}}”/>
Mostrar el texto “Si” o “No” según el valor de una variable tipo Boolean
<Text text=”{= Math.round(${Precio})}”/>
Redondeamos el precio, utilizado la función estándar Math.round()
<ObjectStatus text=”{IdDocumento}” state=”{= RegExp(‘[0-9]{8}[A-Z]’).test(${IdDocumento}) === false ? ‘Error’ : ‘None’}”/>
Validaremos si el campo “IdDocumento” cumple con el formato del DNI (8 números + una letra) utilizando una Expresión Regular de JavaScript.

Y con estos ejemplos prácticos, finaliza este post que esperamos que te resulte de utilidad. Recuerda que cualquier duda puedes dejarla en comentarios, o contactar con nuestro departamento de user experience & integración.