Fiori Elements XML 模版里的 with 指令介绍

举报
Jerry Wang 发表于 2024/04/05 20:46:13 2024/04/05
【摘要】 官方文档:这个指令可以在 XML 模版的作用域之内,定义一个变量。这个变量只能在模版内部有效。在官方文档给出的例子里:<template:with path="meta>com..vocabularies.UI.v1.Badge" var="badge"> <!-- ... --></template:with>meta 指向 oMetaModel, 即 /dataServices/s...

官方文档

hdImg_c5ecc39a1024e16866ce3c9ff7d3ba001577256016147.jpg

这个指令可以在 XML 模版的作用域之内,定义一个变量。这个变量只能在模版内部有效。

在官方文档给出的例子里:

<template:with path="meta>com..vocabularies.UI.v1.Badge" var="badge">
    <!-- ... -->
</template:with>

meta 指向 oMetaModel, 即 /dataServices/schema/0/entityType/0

而 badge 根据 path 的解析,则指向 /dataServices/schema/0/entityType/0/com..vocabularies.UI.v1.Badge.

可以从 with 指令 annotation help, 它接收一个 .ui.model.Context 对象,该对象从指令的 path 属性中标识模型和路径,并可能返回以下内容之一:

  • 分配给变量的 .ui.model.Context 对象

  • 一个非空字符串,用作同一模型中的路径并分配给变量

  • 未定义,在这种情况下,助手被忽略,原始路径被分配给变量

  • 如果视图是异步加载的,则返回一个 Promise 对象,该对象 resolve 之后的值,可以是以上三种任意一种可能。

Annotation helper 可以分析路径指向的对象,并从中导出 resolved path. 这个 path 可以通过执行 normalizor 函数或者 following reference 来得到。

带有 with 指令的模版解析步骤:

<template:with path="meta>Value" helper=".ui.model.odata.AnnotationHelper.resolvePath" var="target">
  <template:if test="{= {target>:semantics} === 'email'}" >
    <core:Icon src="-icon://email" />
  </template:if>
  <template:if test="{= {target>:semantics} === 'tel'}" >
    <core:Icon src="-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 运行时模板。 使用前不需要 .ui.model.odata.AnnotationHelper。

格式化程序函数可用于绑定表达式和测试条件的 template:if 指令。

要使用格式化程序函数,需要通过将配置选项 xx-bindingSyntax 设置为complex 来启用扩展绑定语法。如果未启用扩展绑定语法并且通过注释助手的格式函数创建表达式,则控制台中会发出以下警告:复杂绑定语法未激活。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。