The effect is shown in the figure below:

App View implementation code:

// @ts-nocheck sap.ui.jsview("jerrylist.view.App", { getControllerName: function () { return "jerrylist.view.App"; }, createContent: function (oController) { // to avoid scroll bars on desktop the root view must be set to block display this.setDisplayBlock(true); this.app = new sap.m.SplitApp(); // load the master page var master = sap.ui.xmlview("Master", "jerrylist.view.Master"); master.getController().nav = this.getController(); this.app.addPage(master, true); // load the empty page var empty = sap.ui.xmlview("Empty", "jerrylist.view.Empty"); this.app.addPage(empty, false); return this.app; }});

The sAP.m.SplitApp created in line 13 is actually SplitContainer:

Inside this addPage method, we call addMasterPage or addDetailPage:

The detail page is empty:

Click on the Master List event and register it in the master.view.xml: handleListSelect

After clicking, get the Binding Context from the Event object:

Specific model data can be obtained through PATH:

Use this.nav.to(“Detail”, context) to jump to the Detail page:

The Master view controller’s nav property, which is assigned in the view controller:

In the to implementation: dynamically create a new view with id Detail and call splitContainer. AddPage to add it to the Split App:

To call the app.to method to display the page:

SplitApp to:

/** * Navigates to the given page inside the SplitContainer. * The navigation is done inside the master area if the page  has been added, * otherwise, it tries to do the page navigation in the detail area. * * @param {string} sPageId * The screen to which we are navigating to. The ID or the control itself can be given. * @param {string} [transitionName=slide] * The type of the transition/animation to apply. Options are "slide" (horizontal movement from the right), "baseSlide", "fade", "flip", and "show" * and the names of any registered custom transitions. * * None of the standard transitions is currently making use of any given transition parameters. * @param {object} oData * This optional object can carry any payload data  which should be made available to the target page. The BeforeShow event on the target page will contain this data object as data property. * * Use case: in scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. * * When the transitionParameters object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. * @param {object} oTransitionParameters * This optional object can contain additional information for the transition function, like the DOM element which triggered the transition or the desired transition duration. * * For a proper parameter order, the "data" parameter must be given when the transitionParameters parameter is used (it can be given as "null"). * * NOTE: It depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. * The "show", "Slide" and "Fade" transitions do not use any parameter. * @type this * @public * @since 1.10.0 * @ui5- Metamodel this method also will be described in the UI5 (legacy) designtime metamodel */

More of Jerry’s original articles can be found on “Wang Zixi “: