使用表达式绑定
学习目标
使用表达式绑定来格式化视图上的输出
表达式绑定
表达式绑定是 SAPUI5 绑定语法的增强功能,它允许提供表达式来替代格式化函数(formatter function)。
使用表达式绑定可以省去定义函数的开销,如果格式化函数的实现很简单(例如值的比较),则建议使用表达式绑定。
要使用表达式绑定,需要为应用程序启用复杂绑定语法。
注意
当属性 data-sap-ui-compatVersion="edge"添加到引导脚本时,复杂绑定语法会自动启用。

在 XML 视图中,表达式绑定可通过以下两种方式之一来指定:
{= expression} 此变体使用单向绑定。当模型值发生变化时,会进行自动重新计算。
{:= expression} 此变体使用一次性绑定,即该值只计算一次。此变体需要的资源更少,因为不必维护对模型的更改监听器。
表达式的语法与 JavaScript 语法类似,但只能使用 JavaScript 表达式语法的一个子集。其中,以下语法元素可用:
严格相等运算符:
===, !==关系运算符:
<, >, <=, >=条件运算符:
?二元逻辑运算符:
&&, ||全局符号: 例如,
undefined
此外,还可以使用以下语法将模型层中的值嵌入到表达式中:
${binding}
binding 既可以是简单路径,也可以是复杂绑定。
对于具有标准数据类型(例如 String)的嵌入式绑定,可以使用 . 运算符访问成员和成员方法,如下例所示:
${/CustomerName}.length
注意
运算符使用的一些字符需要在 XML 视图中进行转义,例如&&需要使用&&进行转义。
表达式绑定的示例可在图 Using Expression Binding 中找到。
使用表达式绑定
业务场景
在本练习中,您将使用表达式绑定为概览视图上 Create Customer 按钮的 enabled 属性赋值:仅当客户名称的表单字段包含值时,enabled 属性才应具有值 true,即按钮应处于启用状态,否则应处于禁用状态。此外,您还将使用表达式绑定,通过 SAPUI5 图标字体中的图标来格式化预订表中 Cancellation Status 列的内容。*Template:*Git Repository: https://github.com/SAP-samples/sapui5-development-learning-journey.git, Branch: **sol/16_filtering_and_sorting***Model solution:*Git Repository: https://github.com/SAP-samples/sapui5-development-learning-journey.git, Branch: sol/17_expression_binding
任务 1:根据客户名称输入字段的值设置 Create Customer 按钮的 enabled 属性
步骤
在编辑器中打开
*webapp/view*文件夹中的*Overview.view.xml*文件。为客户名称的
InputUI 元素添加属性valueLiveUpdate="true"。
注意
这会使得 value 属性的值在 Input UI 元素上每次按键后都会更新。否则,该值要等到离开输入字段或按下 Enter 键时才会更新。
结果
客户数据的表单现在应如下所示:
3. 现在为 Create Customer 按钮添加 enabled 属性。按如下方式为其赋值 true 或 false,以确保仅当客户名称的表单字段包含值时该按钮才处于启用状态:
enabled="{= ${customer>/CustomerName} !== undefined && ${customer>/CustomerName}.length > 0 }"
注意
由于您在上文中为客户名称字段添加了 valueLiveUpdate 属性,因此一旦您在空的客户名称字段中输入第一个字符,该按钮就会启用。反之,一旦您删除客户名称字段中的最后一个字符,该按钮就会禁用。
结果
现在
Create Customer
按钮应如下所示:

任务 2:使用 SAPUI5 图标字体中的图标格式化预订表中的取消状态
步骤
确保
*Overview.view.xml*文件已在编辑器中打开。当前,取消状态是通过
TextUI 元素显示在预订表中的。它显示IsCancelled模型属性的内容,如果预订已取消,该属性包含X。 使用表达式绑定,如果预订已取消,现在应显示 SAPUI5 图标字体中的sap-icon://cancel图标。对于未取消的预订,应显示sap-icon://accept图标。 为进行此重新格式化,请从cells聚合中删除<Text text="{IsCancelled}"/>,并将其替换为以下IconUI 元素。除图标外,还设置了工具提示 cancelled 和 not cancelled。
<core:Icon src="{= ${IsCancelled} === 'X' ? 'sap-icon://cancel' : 'sap-icon://accept' }"
tooltip="{= ${IsCancelled} === 'X' ? 'cancelled' : 'not cancelled' }"/>
注意
可用的图标可通过 Icon Explorer 工具在 SAPUI5 Demo Kit 中查找。
结果
现在,预订表应如下所示:
3. 从 SAP Business Application Studio 中启动应用程序,对其进行测试运行。
确保仅当客户名称输入字段包含值时,Create Customer 按钮才处于启用状态。还要确保预订表中的取消状态现在通过带工具提示的图标显示。
右键单击 sapui5-development-learning-journey 项目中的任意子文件夹,然后从出现的上下文菜单中选择 Preview Application。
在出现的对话框中选择名为 start-noflp 的 npm 脚本。
在打开的应用程序中,检查组件是否按预期工作。