SAPUI5路由配置中'controlAggregation'的含义是什么?

时间:2016-07-27 15:10:28

标签: javascript sap sapui5 hana

我真的不知道下面的属性controlAggregation用于路由SAPUI5应用程序。 没有带有该ID的元素。我无法在此处找到的演示应用中找到对“页面”的任何引用:SAPUI5 routing demo

"routing": {
        "config": {
            "routerClass": "sap.m.routing.Router",
            "viewType": "XML",
            "viewPath": "sap.ui.demo.nav.view",
            "controlId": "app",
            "controlAggregation": "pages",   // what does this do?
            "transition": "slide",
            "bypassed": {
                "target": "notFound"
            }

视图定义如下 - 未提及'pages'

<mvc:View
    controllerName="sap.ui.demo.nav.controller.App"
    xmlns="sap.m"
    xmlns:mvc="sap.ui.core.mvc"
    displayBlock="true">
    <App id="app"/>
</mvc:View>

并且

<mvc:View
    controllerName="sap.ui.demo.nav.controller.Home"
    xmlns="sap.m"
    xmlns:mvc="sap.ui.core.mvc">
    <Page title="{i18n>homePageTitle}" class="sapUiResponsiveContentPadding">
        <content>
            <Button id="displayNotFoundBtn" text="{i18n>DisplayNotFound}" press="onDisplayNotFound" class="sapUiTinyMarginEnd"/>
        </content>
    </Page>
</mvc:View>

1 个答案:

答案 0 :(得分:8)

controlAggregation是添加视图的目标聚合。

就像在这种情况下,target是一个sap.m.App,其id为 app

app有一个名为 pages 的聚合。

有关详细信息,请参阅routing configuration

  

更新细节:

假设controlId是您的页面容器,容器的内容将针对每个不同的路由进行更改。

此处容器的内容只不过是app的页面聚合。

虽然我们使用路由,但您只需要配置路由和目标。我们举一个例子 enter image description here

因此,当您导航到category/{id}时,sapui5会在路径中找出该模式的目标。这是category

接下来,它会在viewName对象中找到此目标的targets(此处为类别)(请参阅routes数组之后的目标对象包含catagory,products ...)。 所以SapUI5得到了渲染的视图。但是在哪里渲染这个观点?

答案是 - 它会找到为该viewName提到的controlAggregation(内部类别)。在这个例子中,它被称为masterPages。现在它会找到controlIdconfig的内容。它是splitApp。所以最后它了解了所有必需的信息。即:

  1. viewName : Category
  2. controlId(the container of view) : splitApp
  3. controlAggregation : masterPage
  4. 现在,sapui5将在Category的{​​{1}}聚合内呈现masterPage视图。

    但是注意---- **在你的情况下,如果splitApp对象中没有提到controlAggegation,则会在targets中提及它。这意味着对于所有视图,都有一个共同的controlAggregation,即页面。

    因此,在这种情况下,sapui5会在config的{​​{1}}聚合内呈现您的观点。

    我认为你现在了解这一流程。