我想将JSON对象从一个控制器传递到另一个控制器。我该怎么做?
或者我可以将oModel传递给其他视图吗?如果是这样,我该怎么做?
由于
答案 0 :(得分:5)
如果您将数据存储在全局模型中:
var oData = <your JSON data>;
var oModel = new sap.ui.model.json.JSONModel(oData);
sap.ui.getCore().setModel(oModel);
然后可以从应用程序上下文中的任何其他控制器/视图访问它
答案 1 :(得分:2)
一种解决方案是您使用sap.ui.core.EventBus。基本上,您可以使用subscribe和publish将任何对象从一个控制器传递到另一个控制器,包括JSONModel。
答案 2 :(得分:0)
添加到Qualiture的答案:
如果您想将特定模型附加到特定视图,您的问题听起来有点像,那么您可以通过以下方式实现:
view.setModel(oModel);
干杯 米歇尔
答案 3 :(得分:0)
是的,您可以通过导航将字符串,对象和数组从一个视图传递到另一个视图。
enter code here
enter code here for controller
handleLinkPress: function(oEvent) {
try {
var array = [];
var obj = {
"Delivery": "80000095",
"DelvNo": "80000095",
"Date": "2018-01-04T00:00:00.000Z",
"Priority": "00",
"LoadDate": "2018-01-04T00:00:00.000Z",
"PickDate": "2018-01-04T00:00:00.000Z",
"ShippingPoint": "0001",
"Route": "",
"LoadingPoint": "01",
"ShipTo": "CUSTOMER",
"SoldTo": "CUSTOMER"
};
array.push(obj);
if (obj !== null) {
sap.ui.core.UIComponent.getRouterFor(this).navTo("Route", {
RouteData: JSON.stringify(array)
});
}
} catch (e) {
console.error("Error : " + e.message);
sap.m.MessageBox.show(e.message, {
icon: sap.m.MessageBox.Icon.ERROR,
title: "Error",
actions: [sap.m.MessageBox.Action.OK],
defaultAction: sap.m.MessageBox.Action.OK,
styleClass: "sapUiSizeCompact",
contentWidth: "150px"
});
}
}
Code for manifest.json
{
"pattern": "Route/{RouteData}",
"name": "Route",
"targetControl": "masterView",
"viewId": "Route",
"viewName": "Route"
}
code for the controller where you get that Array which you want pass
handleCloseRoutePress: function(oEv)
{
var sRouteData=JSON.parse(oEv.getParameter("arguments").RouteData);
}