如何将JSON对象从一个控制器传递到另一个控制器(/ view to view)?

时间:2014-08-18 10:41:34

标签: sapui5

我想将JSON对象从一个控制器传递到另一个控制器。我该怎么做?

或者我可以将oModel传递给其他视图吗?如果是这样,我该怎么做?

由于

4 个答案:

答案 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。基本上,您可以使用subscribepublish将任何对象从一个控制器传递到另一个控制器,包括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);


        }