javascript - SAPUI5 将数据从一个 View 传递到另一个 View

标签 javascript routes sapui5

我正在开发一个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

list

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

发送 Controller

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

接收 Controller

    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

list

您的没有任何变化

发送 Controller

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

接收 Controller

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

关于javascript - SAPUI5 将数据从一个 View 传递到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52328598/

相关文章:

javascript - 如何通过标签 "selected"改变背景图片

asp.net - 如何在 ASP.NET GridView 中找到控件的客户端 ID?

javascript - 白色 slider 的当前点

sapui5 - 如何通过 ID 从 XML 片段中访问元素

SAPUI5 如何调试负缓存错误?

javascript - 表单未在 React js 中提交

javascript - Nextjs 页面刷新总是把我带到 index.js

javascript - $stateParams 空 ui 路由器

javascript - Vue Router 总是重新加载浏览器 - 丢失 vuex-state

javascript - UI5 中数组大小更改后绑定(bind)未更新