Передать входные значения одного представления в URL-адрес службы другого представления SAP UI5 - PullRequest
0 голосов
/ 21 сентября 2018

Я создал два представления - view1 и view2.enter image description here

enter image description here

И установите значения ввода как модель Json в View1Controller и перейдите к view2.

onInit: function() {

        oModel = new sap.ui.model.json.JSONModel();

    },

    onPress1: function(oEvent) {

        if (typeof(sales) != 'undefined' || sales != null) {

            oModel.setData({
                "myData":{
                "sales": sales,
                "cust": cust,
                "appl": "LEVEL1"    
                }   
            });

            sap.ui.getCore().setModel(oModel);

                var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
                oRouter.navTo("header");

        } else {
            alert("Please select Sales Person..")
        }
    },

    sChange: function(oEvent) {
        sales = this.byId("salesPerson").getValue().split(",").pop();   
    },
    cChange: function(oEvent) {
        cust = this.byId("customer").getValue().split(",").pop();
    }

В view2Controller я получил данные ввода view1 и создал модель Json, и я хочу создать таблицу в view2 на основе данных ввода view1.

 function(Controller, JSONModel, History) {
"use strict";
 var level, sales, cust;
return Controller.extend("dashdashboard.controller.View2", {

    onInit: function() {

           var oModel= sap.ui.getCore().getModel(oModel);

           level = oModel.getProperty("/myData/appl");
           sales = oModel.getProperty("/myData/sales");
           cust = oModel.getProperty("/myData/cust");


    }

Теперь у меня есть URL-адреса служб-- sap/opu/odata/sap/ZSD_DASHBOARD1_SRV/ZAPPROVALSet(APPLEVEL='LEVEL1',CUSTOMER='',SPERSON='00000009')/SO_HeaderSet

для этого URL мне нужно передать все три значения, поэтому я использовал вот так -

ZAPPROVALSet(APPLEVEL='"+level+"',CUSTOMER='"+cust+"',SPERSON='"+sales+"')/SO_HeaderSet

Скажите, пожалуйста, как я могу связать этот путь с моей таблицей view2?это дает мне ошибки.

<Table items="{ path: '/ZAPPROVALSet(APPLEVEL='"+level+"',CUSTOMER='"+cust+"',SPERSON='"+sales+"')/SO_HeaderSet', sorter: { path: 'vbeln' } }" inset="false" id="idProductsTable">

Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Я нашел решение этой проблемы.Мы должны отправлять параметры во время маршрутизации из одного представления в другое и использовать концепцию RoutePatternMatched.И, наконец, используйте .read () в функции _onRoutePatternMatched для ее разрешения.

И здесь мы можем получить значения из параметров и передать наш рамочный URL после правильного помещения этих значений в URL.

, на который вы можете ссылаться Простое упражнение на одату-и-sap-ui5-приложение

 Call oDataModel.read( pass_your_framed_url_here , { 
    success: function(receivedData){
         //set the received data to local json model and bind that to the view
    } });
0 голосов
/ 05 октября 2018

Вы можете выполнить чтение, но более понятным способом будет привязка элемента с расширением в обработчике сопоставления с образцом и привязка при получении данных.

https://archive.sap.com/discussions/thread/3900020

0 голосов
/ 21 сентября 2018

Я думаю, вам нужно использовать форму Expression Binding с этим.(Не забудьте установить data-sap-ui-bindingSyntax = "complex" в начальной загрузке UI5!)

<Table items="{ path: '{= '/ZAPPROVALSet(APPLEVEL='$(viewModel2>level}',CUSTOMER='$(viewModel2>cust}',SPERSON='$(viewModel2>sales}')/SO_HeaderSet'}', sorter: { path: 'vbeln' } }" inset="false" id="idProductsTable">

Есть ли причина, по которой вы переносите данные из View1 в View2 через Json Modelа не через Параметры маршрутизации ?

...