2016-07-27 4 views
4

Ich bekomme wirklich nicht, was die Eigenschaft controlAggregation unten für das Routing einer SAPUI5-Anwendung tut. Es gibt kein Element mit dieser ID. Ich kann auf jeden Hinweis finden hier gefunden 'Seiten' überall in der Demo-App: SAPUI5 routing demoWas bedeutet "controlAggregation" in der Routing-Konfiguration 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" 
      } 

Die Ansichten als unten- ohne Erwähnung von 'Seiten' definiert sind

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

Und

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

wo möchten Sie die Ansicht setzen? – Tuhin

Antwort

5

controlAggregation ist die Zielaggregation, zu der die Ansicht hinzugefügt wird.

wie in diesem Fall target ist eine sap.m.App, deren ID ist App.

App hat eine Aggregation mit dem Namen Seiten.

Für Details siehe routing configuration.

IM DETAIL AKTUALISIERT:

Angenommen ControlId die für Seiten Ihre Behälter und den Inhalt des Behälter wird für jede unterschiedliche Routen geändert werden.

Hier Inhalt des Containers ist nichts als die Seiten Aggregation von App.

Während wir Routing verwenden, brauchen Sie nur eine Konfiguration der Routen und dort Ziele. Lassen Sie uns ein Beispiel nehmen enter image description here

Also, wenn Sie NavigateTo category/{id}, sapui5 findet heraus, was die Ziel ist für dieses Muster in den Routen. Hier ist es category.

Als nächstes findet es die viewName für dieses Ziel (Hier ist es Kategorie) innerhalb der targets Objekt (siehe nach Routen-Array gibt es ein Ziele-Objekt, das Kategorie, Produkte ...). So SapUI5 bekam die Ansicht zu rendern. Aber wo kann man diese Ansicht rendern?

Die Antwort ist - es wird die controlAggregation (innerhalb der Kategorie) für diesen viewName erwähnt. In diesem Beispiel heißt es masterPages. Jetzt wird es finden, was ist die controlId in der config. Es ist splitApp. So hat es endlich alle notwendigen Informationen bekommen. das heißt:

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

Jetzt wird sapui5 machen Category Blick in den masterPage Aggregation von splitApp.

Aber Hinweis ---- ** In Ihrem Fall, wenn controlAggungation nicht im Objekt targets erwähnt wird, wird es in der config erwähnt. Das bedeutet, dass es für alle Ansichten eine gemeinsame Steueraggregation gibt, nämlich Seiten.

Also In diesem Fall wird sapui5 Ihre Ansichten innerhalb der pages Aggregation von app rendern.

Ich glaube, Sie verstehen den Fluss jetzt.

+1

Schauen Sie sich auch die '' im Beispiel an: https://sapui5.hana.ondemand.com/sdk/explored.html#/sample/sap.ui.core.tutorial.navigation.01/code/ webapp% 252Fview% 252FApp.view.xml –

+0

Ja, ich sehe das in Ihrem Beispiel - aber ich sehe keine Seiten in der Demo namens 'Navigation - Schritt 5 - Ein Ziel anzeigen, ohne den Hash zu ändern' –

+0

fügt die Bibliothek sap ui5 diese Aggregation hinzu standardmäßig? –