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

Pet*_*_ch 6 javascript sap hana sapui5

我真的不知道下面的属性controlAggregation用于路由SAPUI5应用程序.没有带有该ID的元素.我在这里找到的演示应用程序中找不到任何"页面"的引用: SAPUI5路由演示

"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"
            }
Run Code Online (Sandbox Code Playgroud)

观点定义如下 - 没有提到'页面'

<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>
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

Tuh*_*hin 9

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

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

app有一个名为pages的聚合.

详细信息请参见路由配置.

更新详情:

假设controlId是您的页面容器,并且将为每个不同的路由更改容器的内容.

这里容器的内容是什么,但应用程序的页面聚集.

虽然我们使用路由,但您只需要配置路由和目标.我们举一个例子 在此输入图像描述

所以当你浏览时category/{id},sapui5会找出路径中该模式的目标.在这里category.

接下来,它viewNametargets对象内部找到for this target(这里是类别)(在routes数组之后,有一个包含catagory,products ...的目标对象).所以SapUI5得到了渲染的视图.但是在哪里渲染这个视图?

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

  1. viewName : Category ,
  2. controlId(the container of view) : splitApp
  3. controlAggregation : masterPage

现在sapui5将CategorymasterPage聚合中呈现视图splitApp.

但是注意----**在你的情况下,如果targets对象中没有提到controlAggegation ,那么就提到了config.这意味着对于所有视图,存在一个共同的controlAggregation,即页面.

所以在这种情况下,sapui5将在pages聚合中呈现您的视图app.

我想你现在明白了这个流程.