SAP UI5在片段之间动态切换

问题描述 投票:0回答:1

如何使用点击/按下事件在两个片段之间动态切换?

我有以下XML片段,而该片段又嵌套了两个片段:

<core:FragmentDefinition
    xmlns="sap.m"
    xmlns:core="sap.ui.core">
  <IconTabFilter
      id="containerFrag"
      text="{name}"
      key="{id}">
    <dependents>
      <core:Fragment
          fragmentName="com.example.fragments.fragment1"
          type="XML" />
      <core:Fragment
          fragmentName="com.example.fragments.fragment2"
          type="XML" />
    </dependents>
  </IconTabFilter>
</core:FragmentDefinition>

假设每个片段都有一个按钮,其处理程序具有以下内容

buttonPress: function(oEvent) {
  let oView = this.getView();
  let showFrag1 = oEvent.getParameter("arguments"); //showFrag1 = true / false
  let fragToShow = showFrag1 ? oView.byId("frag1Id").clone() : oView.byId("frag2Id").clone()
  let container = oView.byId("containerFrag");
  container.destroyContent();
  container.addContent(fragToShow);
}

[当我使用chrome进行调试时,根据showFrag1参数,fragToShow将使用正确的碎片进行更新,但视图不会得到更新-container.addContent(fragToShow)似乎没有任何作用,除非重新加载页面

sap sapui5 ui5-library
1个回答
0
投票

[不确定为什么这样行得通,但是我不得不从容器中向上移动一个新的片段,就像这样:

let container = oView.byId("containerFrag");
container.getParent().destroyContent();
container.getParent().addContent(fragToShow);

此示例也有帮助:https://ui5.sap.com/#/entity/sap.ui.layout.form.Form/sample/sap.ui.layout.sample.Form354-尽管它们分别使用removeAllContentinsertContent,但似乎都可以正常工作。

感谢@D。 Seah和@Ethan Jewett

© www.soinside.com 2019 - 2024. All rights reserved.