SAPUI5 如何在语义详细视图中插入片段或 xmlview

Posted

技术标签:

【中文标题】SAPUI5 如何在语义详细视图中插入片段或 xmlview【英文标题】:SAPUI5 How to insert fragment or xmlview inside a semantic detail view 【发布时间】:2017-11-15 03:15:24 【问题描述】:

我搜索了这个问题的答案,但我发现的每个解决方案都不起作用,所以我开始认为我的问题可能处于更高的级别(但官方和非官方的 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>

我尝试了所有我能想到的组合,但页面没有呈现。 现在我知道片段和 xmlviews 必须被不能是 sap.m 的“内容”标签的聚合器包围。因此,我尝试使用 sap.ui.layout 中的“VerticalLayout”和“内容”,将它们移动到页面中,但浏览器仍然抱怨使用了正确的聚合器(来自 ff 控制台“无法将文本节点添加为聚合。要将文本添加到聚合中,需要一个环绕的 html 标记:FRAGMENT CONTENT")。 我已经读过该视图必须声明为manifes.json,但如果我理解正确,只有当这个页面是“独立的”时。我认为这不是我的情况,因为我会在我的应用程序中重用这些子视图或片段。 我检查了我在不同的尝试中是否留下了一些拒绝或一些错误的代码,但一切似乎都是正确的。 我认为也许 xmlviews 和 Fragments 不能在 sap.m.semantic.DetailPage 中使用,但我没有通过 SAP doumentation 找到任何证据。 像我所做的那样构建详细信息页面是否正确? IconTabFilter 是否可以包含子视图或片段,或者以另一种方式设计页面更好?每次我更改某些内容时,我都不知道是不是因为概念或设计错误而无法正常工作,对此我感到有些沮丧。

谢谢大家

【问题讨论】:

【参考方案1】:

错误是由&lt;Text&gt; FRAGMENT CONTENT &lt;/Text&gt; 引起的。您不能在&lt;Text&gt; 标记中直接 输入文本。你需要使用&lt;Text text="FRAGMENT CONTENT"/&gt;.

其余的代码看起来都很好。

【讨论】:

嗯,非常感谢您,先生!我的印象是标签内有一些禁止的标签,这对我来说没有多大意义。这绝对是更合乎逻辑的。谢谢 @MarcoDalena 很高兴为您提供帮助。如果这解决了您的问题,请随时接受答案,或者如果没有,请告诉我,我会尝试对其进行编辑。编辑:我注意到您以前从未接受过答案,所以我将把这个链接留在这里:meta.stackexchange.com/questions/5234/…

以上是关于SAPUI5 如何在语义详细视图中插入片段或 xmlview的主要内容,如果未能解决你的问题,请参考以下文章

从 xml 视图 SAPUI5 复制列表项

在 sapui5 片段的 xml 文件中使用 jquery

我如何从一个片段到另一个片段的列表视图适配器进行事务

我们可以在活动 xml 中编写 UI 以及在片段 xm 中编写 UI 吗?

SAPUI5:xml 视图中 html 标记中的 i18n 属性内容

SAPUI5:更改 url 中的 id 后如何重定向到 NotFound 页面?