SAP 官方文档:
这个指令可以在 XML 模版的作用域之内,定义一个变量。这个变量只能在模版内部有效。
在官方文档给出的例子里:
<template:with path="meta>com.sap.vocabularies.UI.v1.Badge" var="badge">
<!-- ... -->
</template:with>
meta 指向 oMetaModel, 即 /dataServices/schema/0/entityType/0
而 badge 根据 path 的解析,则指向 /dataServices/schema/0/entityType/0/com.sap.vocabularies.UI.v1.Badge
.
可以从 with 指令 annotation help, 它接收一个 sap.ui.model.Context 对象,该对象从指令的 path
属性中标识模型和路径,并可能返回以下内容之一:
- 分配给变量的 sap.ui.model.Context 对象
- 一个非空字符串,用作同一模型中的路径并分配给变量
- 未定义,在这种情况下,助手被忽略,原始路径被分配给变量
- 如果视图是异步加载的,则返回一个 Promise 对象,该对象 resolve 之后的值,可以是以上三种任意一种可能。
Annotation helper 可以分析路径指向的对象,并从中导出 resolved path
. 这个 path 可以通过执行 normalizor 函数或者 following reference 来得到。
带有 with 指令的模版解析步骤:
<template:with path="meta>Value" helper="sap.ui.model.odata.AnnotationHelper.resolvePath" var="target">
<template:if test="{= {target>sap:semantics} === 'email'}" >
<core:Icon src="sap-icon://email" />
</template:if>
<template:if test="{= {target>sap:semantics} === 'tel'}" >
<core:Icon src="sap-icon://phone" />
</template:if>
</template:with>
上面的代码,meta 是一个 OData 元模型,meta>Value
的值被传递给 Annotation helper 的 resolvePath 方法,同样传递进去的还有一个 context 对象,resolvePath 解析出一个新的 path,赋给变量 target.
AnnotationHelper 连接与 XML 模板相关的所有部分:它了解 OData 元模型及其结构以及 OData v4 注释。 AnnotationHelper 提供格式化函数和辅助函数。
可以直接从 JavaScript 代码调用这些方法,无需 XML 运行时模板。 使用前不需要 sap.ui.model.odata.AnnotationHelper。
格式化程序函数可用于绑定表达式和测试条件的 <template:if> 指令。
要使用格式化程序函数,需要通过将配置选项 xx-bindingSyntax 设置为complex 来启用扩展绑定语法。如果未启用扩展绑定语法并且通过注释助手的格式函数创建表达式,则控制台中会发出以下警告:复杂绑定语法未激活。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。