SAPUI5 如何在语义详细视图中插入片段或 xmlview
SAPUI5 How to insert fragment or xmlview inside a semantic detail view
我搜索了这个问题的答案,但我找到的每个解决方案都没有用,所以我开始认为我的问题可能在更高级别(但官方和非官方的 SAP 指南没有帮助)。
我有一个 Fiori Master-Detail 应用程序,我的详细视图如下:
<mvc:View
controllerName="masterdetailsample.controller.Detail"
xmlns="sap.m"
xmlns:l="sap.ui.layout"
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc"
xmlns:semantic="sap.m.semantic">
<semantic:DetailPage
id="page"
navButtonPress="onNavBack"
showNavButton="{device>/system/phone}"
title="{i18n>detailTitle}"
busy="{detailView>/busy}"
busyIndicatorDelay="{detailView>/delay}">
<semantic:content>
<ObjectHeader
id="objectHeader"
title="{EmployeeID}">
</ObjectHeader>
<l:VerticalLayout>
<IconTabBar
id="iconTabBar"
class="sapUiResponsiveContentPadding"
upperCase="true">
<items>
<IconTabFilter
id="detailIconTabBarInfo"
text="{i18n>detailIconTabBarInfo}"
tooltip="{i18n>detailIconTabBarInfo}">
<Toolbar design="Solid">
<content>
<Title
text="{i18n>detailIconTabBarInfo}"
width = "100%">
</Title>
</content>
</Toolbar>
<core:Fragment id="perfEval" fragmentName="masterdetailsample.view.viewcomponents.PerformanceDevelopment" type="XML"/>
<mvc:XMLView id="compOvw" viewName="masterdetailsample.view.viewcomponents.PerformanceDevelopment" displayBlock="true"/>
</IconTabFilter>
</items>
</IconTabBar>
</l:VerticalLayout>
</semantic:content>
</semantic:DetailPage>
</mvc:View>
我的片段页面如下:
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:mvc="sap.ui.core.mvc">
<Text>
FRAGMENT CONTENT
</Text>
</core:FragmentDefinition>
而 xmlview 是:
<mvc:View
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:mvc="sap.ui.core.mvc"
controllerName="masterdetailsample.controller.PerformanceDevelopment">
<Text>
FRAGMENT CONTENT
</Text>
</mvc:View>
我尝试了所有我能想到的组合,但页面无法呈现。
现在我知道fragments和xmlviews必须被聚合器包围,不能是sap.m的"content"标签。所以我尝试使用 "VerticalLayout" 和 "content" 来自 sap.ui.layout,将它们移动到页面中,但浏览器仍然抱怨使用了正确的聚合器(来自 ff 控制台 "Cannot add text nodes as direct child of an aggregation. For adding text to an aggregation, a surrounding html tag is needed: FRAGMENT CONTENT") .
我读过必须将视图声明为 manifes.json,但如果我理解正确,只有当此页面为 "standalone" 时。我认为这不是我的情况,因为我会在我的应用程序中重用许多这个子视图或片段。
我检查了我在不同的尝试中是否有一些垃圾或一些错误的代码,但一切似乎都是正确的。
我想也许 xmlviews 和片段不能在 sap.m.semantic.DetailPage 中使用,但我还没有通过 SAP doumentation 找到任何证据。
像我所做的那样构建详细信息页面是正确的吗? IconTabFilter 是否可以包含子视图或片段,或者最好以另一种方式设计页面?每次我更改一些东西时,我都不知道它是否因为概念或设计错误而不起作用,对此我感到有点沮丧。
谢谢大家
错误是由<Text> FRAGMENT CONTENT </Text>
引起的。您不能将文本 直接 输入到 <Text>
标签中。您需要使用 <Text text="FRAGMENT CONTENT"/>.
其余代码似乎没问题。
我搜索了这个问题的答案,但我找到的每个解决方案都没有用,所以我开始认为我的问题可能在更高级别(但官方和非官方的 SAP 指南没有帮助)。
我有一个 Fiori Master-Detail 应用程序,我的详细视图如下:
<mvc:View
controllerName="masterdetailsample.controller.Detail"
xmlns="sap.m"
xmlns:l="sap.ui.layout"
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc"
xmlns:semantic="sap.m.semantic">
<semantic:DetailPage
id="page"
navButtonPress="onNavBack"
showNavButton="{device>/system/phone}"
title="{i18n>detailTitle}"
busy="{detailView>/busy}"
busyIndicatorDelay="{detailView>/delay}">
<semantic:content>
<ObjectHeader
id="objectHeader"
title="{EmployeeID}">
</ObjectHeader>
<l:VerticalLayout>
<IconTabBar
id="iconTabBar"
class="sapUiResponsiveContentPadding"
upperCase="true">
<items>
<IconTabFilter
id="detailIconTabBarInfo"
text="{i18n>detailIconTabBarInfo}"
tooltip="{i18n>detailIconTabBarInfo}">
<Toolbar design="Solid">
<content>
<Title
text="{i18n>detailIconTabBarInfo}"
width = "100%">
</Title>
</content>
</Toolbar>
<core:Fragment id="perfEval" fragmentName="masterdetailsample.view.viewcomponents.PerformanceDevelopment" type="XML"/>
<mvc:XMLView id="compOvw" viewName="masterdetailsample.view.viewcomponents.PerformanceDevelopment" displayBlock="true"/>
</IconTabFilter>
</items>
</IconTabBar>
</l:VerticalLayout>
</semantic:content>
</semantic:DetailPage>
</mvc:View>
我的片段页面如下:
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:mvc="sap.ui.core.mvc">
<Text>
FRAGMENT CONTENT
</Text>
</core:FragmentDefinition>
而 xmlview 是:
<mvc:View
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form"
xmlns:mvc="sap.ui.core.mvc"
controllerName="masterdetailsample.controller.PerformanceDevelopment">
<Text>
FRAGMENT CONTENT
</Text>
</mvc:View>
我尝试了所有我能想到的组合,但页面无法呈现。
现在我知道fragments和xmlviews必须被聚合器包围,不能是sap.m的"content"标签。所以我尝试使用 "VerticalLayout" 和 "content" 来自 sap.ui.layout,将它们移动到页面中,但浏览器仍然抱怨使用了正确的聚合器(来自 ff 控制台 "Cannot add text nodes as direct child of an aggregation. For adding text to an aggregation, a surrounding html tag is needed: FRAGMENT CONTENT") .
我读过必须将视图声明为 manifes.json,但如果我理解正确,只有当此页面为 "standalone" 时。我认为这不是我的情况,因为我会在我的应用程序中重用许多这个子视图或片段。
我检查了我在不同的尝试中是否有一些垃圾或一些错误的代码,但一切似乎都是正确的。
我想也许 xmlviews 和片段不能在 sap.m.semantic.DetailPage 中使用,但我还没有通过 SAP doumentation 找到任何证据。
像我所做的那样构建详细信息页面是正确的吗? IconTabFilter 是否可以包含子视图或片段,或者最好以另一种方式设计页面?每次我更改一些东西时,我都不知道它是否因为概念或设计错误而不起作用,对此我感到有点沮丧。
谢谢大家
错误是由<Text> FRAGMENT CONTENT </Text>
引起的。您不能将文本 直接 输入到 <Text>
标签中。您需要使用 <Text text="FRAGMENT CONTENT"/>.
其余代码似乎没问题。