繁体   English   中英

SAPUI5将数据从一个视图传递到另一视图

[英]SAPUI5 Pass data from one view to another view

我正在开发一个SAPUI5应用程序,在我的应用程序中,我需要将数据从一个View1传递到View2。 我从互联网上遵循了一些示例代码,但似乎对我不起作用。

以下是我的源代码

View1.controller.js

onShoppingCartPressed: function(){
    var viewCartData = {
        "Customer" : SelectedCustomer,
        "Salesman" :  SelectedSalesman,
        "TxnKey" : "TXN1000103"
    };
    this._oRouter.navTo("ViewCarts", viewCartData);
 }

View2.controller.js

    onInit: function () {          
                this._oRouter.getRoute("ViewCarts")
               .attachMatched(this._onRouteMatched, this);  
           },

   _onRouteMatched: function(oEvent) {
                        console.log(oEvent.getParameter("arguments"));
                    },

的manifest.json

    "routing": {
        "config": {
            "routerClass": "sap.f.routing.Router",
            "viewType": "XML",
            "viewPath": "com.accenture.newspage.order.ui.order-ui.view",
            "controlId": "flexibleColumnLayout",
            "transition": "slide",
            "controlAggregation": "beginColumnPages",
            "bypassed": {
                "target": [
                    "notFound"
                ]
            },
            "async": true
        },
        "routes": [
            {
              "pattern": "orderDetail/{order}/{layout}",
              "name": "orderDetail",
              "target": [
                "order",
                "orderDetail"
              ]
            },
            {
                "pattern": "ViewCarts",
                "name": "ViewCarts",
                "target": "viewCarts"
            }
        ],
        "targets": {
            "worklist": {
                "viewName": "Worklist",
                "viewId": "worklist",
                "viewLevel": 1
            },
            "viewCarts": {
                "viewName": "ViewCart",
                "viewId": "ViewCartPage",
                "viewLevel": 1
            }
        }
    }

当我console.log()输出数据时,它显示了空数据,并且没有显示我从View1传递的数据。

您似乎在这里有两个选择。 如果我错了纠正我。

希望这可以帮助。

选项1

表现

 {
    "pattern": "ViewCarts/customer/{Customer}/Salesman/{Salesman}/key/{TxnKey}",
    "name": "ViewCarts",
    "target": "ViewCarts"
}

发送控制器

    onShoppingCartPressed: function(oEvent) {
        var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
        oRouter.navTo("viewCarts", {
            Customer: "XXXXXXXXXXXX", // can't be an object
            Salesman: "xxxxxxxxxxxx",
            TxnKey  : "TXN1000103"
        });
    }

接收控制器

    onInit: function() {
        var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
        oRouter.getRoute("viewCarts").attachMatched(this._onRouteMatched, this);
    },

    _onRouteMatched: function(oEvent) {
        var customer = oEvent.getParameter("arguments").Customer;
        var salesman = oEvent.getParameter("arguments").Salesman;
        var key = oEvent.getParameter("arguments").TxnKey;
    }

选项2

表现

没有变化

发送控制器

    onShoppingCartPressed: function(oEvent) {
        var viewCartData = {
            "Customer": "XXXXXXXXXXXX",
            "Salesman": "xxxxxxxxxxxx",
            "TxnKey": "TXN1000103"
        };

        var oModel = new sap.ui.model.json.JSONModel(viewCartData);
        this.getOwnerComponent().setModel(oModel, "viewCartData");
        // OR sap.ui.getCore().setModel(oModel, "viewCartData");

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

接收控制器

onInit: function() {
        var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
        oRouter.getRoute("viewCarts").attachMatched(this._onRouteMatched, this);
    },

    _onRouteMatched: function(oEvent) {
        var oModel = this.getView().getModel("viewCartData");
        // OR var oModel = sap.ui.getCore().getModel("viewCartData");
    }

在大多数情况下,对我而言,最好使用sessionStorage

它允许您保存几乎所有内容(也包括javascript Object )并在webapp中的任何位置进行访问。

sessionStorage.setItem('myKeyString', 'myString'); //Set value
sessionStorage.getItem('myKeyString');  // Get saved string
sessionStorage.setItem('myObject', JSON.stringify({"key": "value"})); // Save object
JSON.parse(sessionStorage.getItem('myObject')); // Get saved object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM