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)
controlAggregation是添加视图的目标聚合.
就像在这种情况下,target是一个sap.m.App,其id是app.
app有一个名为pages的聚合.
详细信息请参见路由配置.
更新详情:
假设controlId是您的页面容器,并且将为每个不同的路由更改容器的内容.
这里容器的内容是什么,但应用程序的页面聚集.
所以当你浏览时category/{id}
,sapui5会找出路径中该模式的目标.在这里category
.
接下来,它viewName
在targets
对象内部找到for this target(这里是类别)(在routes数组之后,有一个包含catagory,products ...的目标对象).所以SapUI5得到了渲染的视图.但是在哪里渲染这个视图?
答案是 - 它将找到为该viewName提到的controlAggregation(内部类别).在这个例子中,它被称为masterPages
.现在,它会发现什么controlId
的config
.是的splitApp
.所以最后它了解了所有必需的信息.即:
viewName : Category
,controlId(the container of view) : splitApp
controlAggregation : masterPage
现在sapui5将Category
在masterPage
聚合中呈现视图splitApp
.
但是注意----**在你的情况下,如果targets
对象中没有提到controlAggegation ,那么就提到了config
.这意味着对于所有视图,存在一个共同的controlAggregation,即页面.
所以在这种情况下,sapui5将在pages
聚合中呈现您的视图app
.
我想你现在明白了这个流程.