Search code examples
jsonsapui5w2ui

Map json to menu in Openui5


In w2ui I can map a json to a sidebar http://w2ui.com/web/demos/#!sidebar/sidebar-1 Can I do it in openui5?

I want the same result.

Obviously I do not want a tree but a list of items that swipe right if I tap on an item (and visualize a sub-menu list) and slide left if I press back button (and visualize the menu at upper level). enter image description here


Solution

  • I solved my problem: Every time that i click on a menu item i call this function into view controller:

    //when click on item
        onPressMenuItem: function(evt) {
    
            var selectedItem=evt.getSource().getBindingContext().getObject();
            var objAction=getActionWhenPressMenuItem(selectedItem, this.getView().getModel());
            console.log(objAction);
    
            if(objAction.hasNextSidebar==true){ // sub menu
                var model = new sap.ui.model.json.JSONModel();
                model.setData(objAction.nextSidebar);
                var oSplitApp=sap.ui.core.Core().byId("splitApp");
                var nextView = sap.ui.xmlview("general.master.menuMaster");
                nextView.setModel(model);
                nextView.byId("idPageSidebar").setTitle(selectedItem.text);
                oSplitApp.addMasterPage(nextView);
                oSplitApp.toMaster(nextView);
    
            }else{ // open operation detail
                var idDetail =objAction.opDetail;
                var targetApp = getAppBySelectionId(idDetail);
    
                if(targetApp.masterView!=null){//if app has own master
                    sap.ui.getCore().getEventBus().publish("navMaster", "to", {
                        idView: targetApp.masterView
                    });
                }
                if(targetApp.detailView!=null){//if app has own detail
                    sap.ui.getCore().getEventBus().publish("navDetail", "to", {
                        //titleOfDetailPage: selectedItem.text,
                        idView: targetApp.detailView,
                        //idCall: selectedItem
                    });
                }   
            } 
    
        },
    

    I create every time a new istance of the menu on a new page.