javascript - 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"));
},
清单.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");
}
推荐阅读
- css - 如何在响应时防止 Youtube 视频溢出页面?
- javascript - Karma/Jasmine Angular InjectionToken 测试失败,除非我使用 fdescribe
- sql - SQL 中的累积保留率
- flutter - JSON Serializable 插件在更新到 Android Studio 4.2.2 后停止工作
- excel - 尝试更改宏,以便当活动单元格是数字时,它会改变颜色,但如果不是,它不会
- build - ng serve 与 --poll 选项导致无限重新加载
- node.js - 如何在 Next.js 中获取完整的服务器错误日志?
- node.js - 处理来自外部服务器/api的不记名令牌的最佳方法是什么
- c - 如何修复函数调用中指定参数的“不兼容类型”?
- android - 无法从其他应用访问自定义内容提供程序