SAPUI5 将数据从一个视图传递到另一个视图 [英] SAPUI5 Pass data from one view to another view

查看:41
本文介绍了SAPUI5 将数据从一个视图传递到另一个视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am developing of a SAPUI5 application, in my application I need to pass data from one View1 to View2. I follow some sample code from internet but it seems like does not work for me.

以下是我的源代码

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

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 传递过来的数据.

When I console.log() out the data, it shows me empty data and it does not show the data that I passed from View1.

推荐答案

在我的选项中,您似乎有两个选项.如果我错了,请纠正我.

You seem to have two options here in my option. Correct me if I'm wrong.

希望这会有所帮助.

选项 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");
    }

这篇关于SAPUI5 将数据从一个视图传递到另一个视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆