Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Odata 在另一个视图SAP UI5的服务URL中传递一个视图的输入值_Odata_Sapui5_Sap Fiori - Fatal编程技术网

Odata 在另一个视图SAP UI5的服务URL中传递一个视图的输入值

Odata 在另一个视图SAP UI5的服务URL中传递一个视图的输入值,odata,sapui5,sap-fiori,Odata,Sapui5,Sap Fiori,我创建了两个视图-视图1: 和视图2: 并在View1Controller中将输入值设置为Json模型,然后导航到view2 onInit: function() { oModel = new sap.ui.model.json.JSONModel(); }, onPress1: function(oEvent) { if (typeof(sales) != 'undefined' || sales != null) {

我创建了两个视图-视图1:

和视图2:

并在View1Controller中将输入值设置为Json模型,然后导航到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\u DASHBOARD1\u SRV/ZAPPROVALSet(APPLEVEL='LEVEL1',CUSTOMER='',SPERSON='00000009')/SO\u 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">


请帮忙。

我想你需要使用so形式的。(不要忘记在UI5引导中设置数据sap ui bindingSyntax=“complex”)



您为什么通过Json模型而不是通过Json模型将数据从View1传输到View2,这是有原因的吗?

我找到了解决此问题的方法。我们应该在从一个视图路由到另一个视图时发送参数,并使用RoutePatternMatched概念。最后,在_onRoutePatternMatched函数中使用.read()来解析它

在这里,我们可以从prameters中获取值,并在正确地将这些值放入URL后传递我们的框架URL

你可以参考


您可以进行读取,但更干净的方法是使用模式匹配处理程序中的expand进行元素绑定,并在收到数据时进行绑定


如果不使用模型,就不能引用XML中的变量。我建议从oData默认模型对象()在控制器代码中加载ZAPPROVALSet/SO_HeaderSet的数据。将结果存储在新的控制器JSONModel中,然后将xml表绑定到该JSONModel。这种方式比直接将xml表绑定到默认模型更灵活。this.myURL=“ZAPPROVALSet(APPLEVEL=”“+level+”,CUSTOMER=”“+cust+”,SPERSON=”“+sales+”)/SO_HeaderSet”;var oViewModel=newjsonmodel({myURL:this.myURL});this.getView().setModel(oViewModel,“视图”);和视图中的访问--但它不起作用。
<Table items="{ path: '{= '/ZAPPROVALSet(APPLEVEL='$(viewModel2>level}',CUSTOMER='$(viewModel2>cust}',SPERSON='$(viewModel2>sales}')/SO_HeaderSet'}', sorter: { path: 'vbeln' } }" inset="false" id="idProductsTable">
 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
    } });