为什么要用“FragmentDefinition”包装“Dialog”?

2024-01-11

UI5 对话框可以直接定义为Dialog:

<Dialog
    xmlns = "sap.m"
    id = "helloDialog"
    title = "Hello {/recipient/name}">
    <beginButton>
        <Button
            text = "{i18n>dialogCloseButtonText}"
            press = ".onCloseDialog" />
    </beginButton>
</Dialog>

或者可以用一个包裹FragmentDefinition:

<core:FragmentDefinition
    xmlns:core = "sap.ui.core"
    xmlns = "sap.m">

    <Dialog
        id = "helloDialog"
        title = "Hello {/recipient/name}">
        <beginButton>
            <Button
                text = "{i18n>dialogCloseButtonText}"
                press = ".onCloseDialog" />
        </beginButton>
    </Dialog>

</core:FragmentDefinition>

据我了解,一个FragmentDefinition提供了更高程度的重用,因为它不依赖于任何视图的控制器,但可以使用自定义控制器进行初始化sap.ui.core.Fragment.load():

this._oDialog = await Fragment.load({
    controller: fragmentController,
    id: oView.getId(),
    name: "webapp.view.MyDialog"
});

然而,根据文档 https://openui5nightly.hana.ondemand.com/topic/04129b2798c447368f4c8922c3c33cd7,从 UI5 1.93 开始,loadFragment()功能可在每个控制器实例上扩展sap.ui.core.mvc.Controller与通用 API 相比,该 API 有几个优点sap.ui.core.Fragment.load()功能。

如果我使用一个loadFragment(),我还应该包裹一个Dialog with FragmentDefinition?我已经尝试了两种实现,它们都有效,并且我在视图上看到一个对话框,那么使用有什么好处FragmentDefinition如果我还能直接打电话Dialog with loadFragment()?


The <core:FragmentDefinition>是一个运行时工件不是 DOM 的一部分但仅用于目的包装多个 XML 根节点 in *.fragment.xml文件。 IE。:

具有多个根节点的片段

From the topic "Fragments with Multiple Root Nodes" https://openui5.hana.ondemand.com/topic/23b9c779c2274213a281c1fc46b4962b

<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core"> <!--mandatory-->
  <Label text="..." />
  <Input />
  <Button text="..." />
</core:FragmentDefinition>

As XML 文档需要恰好有一个根节点,要实现具有多个根节点的 XML 片段,需要额外的<FragmentDefinition>标签需要添加为根元素。

具有单个根节点的片段

From the sample sap.m.ActionSheet https://openui5.hana.ondemand.com/entity/sap.m.ActionSheet/sample/sap.m.sample.ActionSheet/code/view/ActionSheet.fragment.xml

<!-- No need to wrap this single root node with <FragmentDefinition> -->
<ActionSheet id="actionSheet"
  xmlns="sap.m"
  xmlns:core="sap.ui.core"
  core:require="{ MessageToast: 'sap/m/MessageToast' }"
  title="Choose Your Action"
  showCancelButton="true"
  placement="Bottom">
  <Button
    text="Accept"
    icon="sap-icon://accept"
    press="MessageToast.show('Selected action is ' + ${$source>/text})" />
  <!-- ... -->
  <Button
    text="Other"
    press="MessageToast.show('Selected action is ' + ${$source>/text})"
  />
</ActionSheet>

因此,根本没有必要<Dialog>片段也可以使用<core:FragmentDefinition>.


Note

  • 上述内容仅适用于 XML 片段。例如 JS 片段不需要FragmentDefinition. FragmentDefinition甚至不是您需要的模块。
  • 片段是否是created via this.loadFragment, Fragment.load(),...等等都没关系。<FragmentDefinition>只为定义的碎片。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么要用“FragmentDefinition”包装“Dialog”? 的相关文章

  • 如何在 XML 视图中动态加载 XML 片段?

    假设我有以下 XML 视图
  • 日期选择器:如何在 UI5 中将日历焦点更改为今天的日期?

    我面临着一个问题sap m DatePicker 当我单击日历图标时 我想在日历中查看今天的日期 但我无法显示 下面是我的代码
  • SapUI5-平铺容器不工作

    由于某种原因 tilecontainer 无法工作 如果我放置一个列表而不是 Tiles 它工作正常 我正在尝试构建一个包含图块的简单应用程序 我是 SAPUI5 的新手 这是XML的代码
  • 如何在 SAPUI5 的控制器中使用内部化 i18n?

    谁能解释一下如何使用i18n中的文本setValueStateText控制器中的方法 oTP setValueStateText i18n gt co Maximal 60 h 对话框中的错误消息仅显示 i18n gt co Maximal
  • Sapui5:如何在smarttable中设置初始排序顺序?

    我有一张智能桌子 如何在智能表的一列或多列上设置初始排序顺序
  • 如何后台加载sapui5资源

    在我们的应用程序中 我们加载了许多 SAPUI5 库 index html 有以下代码来加载 SAPUI5 资源 在我们的 web xml 中我们已经提到https sapui5 hana on
  • 如何从表中删除行

    这个问题是这个问题的后续问题 在 SAPUI5 表中添加新行的按钮 在我的新场景中 我在表格的第一列中添加了一个 删除 按钮 同样 JSON 文件如下所示 Invoices ProductName Pineapple Quantity 21
  • 智能字段注释 - valuehelp 下拉菜单

    我有一个值帮助字段 并且只想在下拉列表中查看说明 而不是代码 选择后 想要将代码存储在另一个处于隐藏模式的字段中 为此 我定义了以下注释
  • 带参数的路由不起作用

    我正在关注tutorial https openui5 hana ondemand com docs guide 2366345a94f64ec1a80f9d9ce50a59ef html在这里 我陷入了带参数的路由 该示例应用程序未在我的
  • 用于突出显示表格行或列的替代颜色

    表格替代颜色为开发指南中建议 https openui5 hana ondemand com 1 34 0 docs guide 7ec7885ce75c4237aadc67d83f64b66e html不起作用 salesarea tbo
  • 使用 OData 服务时无法加载资源

    你好 社区 我需要一些帮助 我的 odata 服务已经在运行 并且我有一个像这样的网址 https myclient port sap opu odata SAP servicename SRV MaterialListSet https
  • 聚合绑定模板共享错误

    当我在 SAPUI5 应用程序中使用 PlanningCalendar 控件时 出现以下错误 它不是我要销毁或重新创建的元素 而只是用于显示数据 因此 我认为我不需要担心这个错误 有什么办法可以摆脱它吗 为什么它会与计划日历一起出现 我使用
  • 为什么要用“FragmentDefinition”包装“Dialog”?

    UI5 对话框可以直接定义为Dialog
  • 切换按钮和开关的区别

    切换按钮和开关有什么区别 由于它们提供相同的功能 使用切换按钮或开关的具体用例是什么 切换按钮 Switch 这更多的是一个用户体验问题 而不仅仅是编码问题 这是我的回答 该控件的描述是这样说的 Toggle是一个按钮 sap m Togg
  • 表动态加载SAPUI5/UI5

    我想在 SAPUI5 Table 组件中显示大量数据 我曾经通过动态加载来实现这些数据表 这意味着该表最初加载了约 50 条记录 用户向下滚动足够远后 下一组 50 条记录将加载到表中 这样我就可以显示包含超过 160 000 个条目的表格
  • 从 XML 绑定表达式调用控制器函数

    使用 OpenUI5 SAPUI5 根据文档XML 绑定表达式 https help sap com saphelp nw74 helpdata en da f6852a04b44d118963968a1239d2c0 content ht
  • SAPUI5:如何过滤具有2个或更多值的数据

    我目前正在 SAPUI5 中尝试一些东西 并且我已经实现了一个非常简单的搜索 如下所示 var filters var query evt getParameter query if query query length gt 0 var
  • 在客户端 SAPUI5 中仅过滤 sap.m.List

    我正在寻找仅在客户端过滤列表 并让其他类似表等在服务器端过滤 是否有任何选项可以添加到列表中以在客户端进行过滤 问候 您可以使用操作模式v2 ODataModel 的参数 该参数可以设置为模型级别 https openui5 hana on
  • 智能表,onclick事件

    是否可以在智能表上处理 onClick 事件 我已经注释了来自后端的数据 单击某个条目时 我想导航到一个新视图 显示与我单击的条目关联的所有数据 我怎样才能在 SAPUI5 中实现这一点 我可以在 JavaScript 控制器中使用 get
  • SAPUI5 oTable 一行作为链接,其他作为文本视图

    目前我有一个 sapui 表 我希望其中一行是链接 所有其他行应该是文本视图 我的问题是 构建表是基于列 oTable addColumn new sap ui table Column label new sap ui commons L

随机推荐