如何使用点击/按下事件在两个片段之间动态切换?
我有以下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)似乎没有任何作用,除非重新加载页面
[不确定为什么这样行得通,但是我不得不从容器中向上移动一个新的片段,就像这样:
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-尽管它们分别使用removeAllContent
和insertContent
,但似乎都可以正常工作。
感谢@D。 Seah和@Ethan Jewett