【问题标题】:What is the meaning of 'controlAggregation' in the SAPUI5 routing configuration?SAPUI5路由配置中的'controlAggregation'是什么意思?
【发布时间】:2016-07-27 15:10:27
【问题描述】:

我真的不明白下面的属性 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"
            }

视图定义如下-未提及“页面”

<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>

【问题讨论】:

  • 你想把视图放在哪里?

标签: sapui5


【解决方案1】:

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

在这种情况下,目标是一个 sap.m.App,其 id 是 app

app 有一个名为 pages 的聚合。

详情见routing configuration

详细更新:

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

这里容器的内容就是app的页面聚合。

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

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

接下来,它在targets 对象内找到此目标的viewName(这里是类别)(请参阅路由数组后有一个包含类别、产品...的目标对象)。 所以 SapUI5 得到了要渲染的视图。但是在哪里渲染这个视图呢?

答案是 - 它会找到针对该 viewName 提到的 controlAggregation(在类别内)。在这个例子中,它被称为masterPages。现在它会在config 中找到controlId 是什么。它是splitApp。所以最后它知道了所有必需的信息。即:

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

现在 sapui5 将在 splitAppmasterPage 聚合中呈现 Category 视图。

但请注意----** 在您的情况下,如果targets 对象中未提及 controlAgegation,则在 config 中提及。这意味着对于所有视图,都有一个共同的 controlAggregation,即 pages。

因此,在这种情况下,sapui5 将在 apppages 聚合中呈现您的视图。

我想你现在理解流程了。

【讨论】:

  • 另外,看看示例中的&lt;pages&gt;sapui5.hana.ondemand.com/sdk/explored.html#/sample/…
  • 是的,我在您的示例中看到了这一点 - 但我在演示中没有看到名为“导航 - 步骤 5 - 显示目标而不更改哈希”的页面
  • sap ui5库默认添加这个聚合吗?
  • 是的。如果你实例化一个 sapui5 控件,它会自动创建它的聚合,默认情况下这些聚合将是空白的。您需要自己添加。比如:app.addPage(somePage), layout.addContent(someContent).. 所以聚合表示一个元素的内部元素
  • 我认为我的困惑是由这些 controlaggregations 的创建位置引起的 - 我认为它们是由 ui5 创建的 - 在配置中我们只是引用它们;与开发人员创建的 div /element/object 不同。要验证,请回答这个问题 - 我可以决定我希望 controllaggregation 被称为“主页”吗?
猜你喜欢
  • 2022-01-28
  • 2013-12-17
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多