SAPUI5 Grundlagen

Verschachtelte Views

Views in Views

(C) Brandeis Consulting.

Motivation & Vorgehen für verschachtelte Views

Motivation

Die Hauptgründe für verschachtelte Views sind:

  • Wiederverwendbarkeit von Oberflächenbereichen
  • Austausch von Oberflächenbereichen

Vorgehen beim Verlagern in einen eingebetteten View

  • Anlegen eines neuen Views mit Controller
  • Einbetten des neuen Views in den bestehenden View statt der konkreten Oberflächenelemente
  • Aufräumen des bestehenden Views & Controllers
(C) Brandeis Consulting.

Anlegen eines neuen Views

... Wie gehabt. Gerne ein bestehenden View kopieren...

<mvc:View
   controllerName="ui5.walkthrough.controller.HelloPanel"
   xmlns="sap.m"
   xmlns:mvc="sap.ui.core.mvc">
   <Panel
      headerText="{i18n>helloPanelTitle}"
      class="sapUiResponsiveMargin"
      width="auto">
      <content>
         <Button
            text="{i18n>showHelloButtonText}"
            press=".onShowHello"
            class="myCustomButton"/>
         <Input
            value="{/recipient/name}"
            valueLiveUpdate="true"
            width="60%"/>
         <FormattedText
            htmlText="Hello {/recipient/name}"
            class="sapUiSmallMargin 
                    sapThemeHighlight-asColor 
                    myCustomText"/>
      </content>
   </Panel>
</mvc:View>
HelloPanel.view.xml
sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/m/MessageToast"
 ], (Controller, MessageToast) => {
    "use strict";
 
    return Controller.extend("ui5.walkthrough.controller.HelloPanel", {
       onShowHello() {
          // read msg from i18n model
          const oBundle = this.getView().getModel("i18n").getResourceBundle();
          const sRecipient = this.getView().getModel().getProperty("/recipient/name");
          const sMsg = oBundle.getText("helloMsg", [sRecipient]);
 
          // show message
          MessageToast.show(sMsg);
       }
    });
 });
HelloPanel.controller.js
(C) Brandeis Consulting.

Einbetten des Views & Aufräumen

<mvc:View
    controllerName="ui5.walkthrough.controller.App"
    xmlns="sap.m"
    xmlns:mvc="sap.ui.core.mvc"
    displayBlock="true">
    <Shell>
        <App class="myAppDemoWT">
            <pages>
                <Page title="{i18n>homePageTitle}">
                    <content>
                       <mvc:XMLView viewName="ui5.walkthrough.view.HelloPanel"/>
                    </content>
                </Page>
            </pages>
        </App>
    </Shell>
</mvc:View>
App.view.xml
sap.ui.define([ "sap/ui/core/mvc/Controller"
], (Controller) => {
   "use strict";
   return Controller.extend("ui5.walkthrough.controller.App", {
   });
});
App.controller.js
(C) Brandeis Consulting.

Herausforderungen & Übungen

Mehrfaches Einbinden eines Views

Binde den View mehrfach ein.

  • Was wird angezeigt?
  • Was passiert, wenn im Eingabefeld Daten erfasst werden?
(C) Brandeis Consulting.