将json映射到Openui5中的菜单

时间:2014-06-13 14:07:36

标签: json sapui5 w2ui

在w2ui中,我可以将json映射到侧边栏http://w2ui.com/web/demos/#!sidebar/sidebar-1 我可以在openui5中做到吗?

我想要相同的结果。

显然我不想要一个树,而是一个项目列表,如果我点击一个项目(并可视化一个子菜单列表)向右滑动,如果我按下后退按钮(并在上层可视化菜单)向左滑动。 enter image description here

2 个答案:

答案 0 :(得分:0)

我认为这是可能的,但据我所知,你必须做一些体力劳动:

  1. 检测您的节点是否有一个或多个子节点,并根据该节点设置sap.m.ListTypeNavigation
  2. 如果您的根节点(f.i。,"/items")有子节点(f.i.,"childs"),则需要将列表重新绑定到此子路径("/items/<index_of_parent_node>/childs)
  3. 要获得滑动效果,您可能需要将列表封装在sap.m.Page
  4. 根据您所在的节点级别,您需要隐藏/显示后退按钮,并按下它将列表绑定到父路径
  5. 但是,如果有更清洁,更简单的方法,我也很乐意听到它!

答案 1 :(得分:0)

我解决了我的问题: 每次我点击菜单项时,我都会将此功能调用到视图控制器中:

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

    },

我每次在新页面上创建新菜单时都会创建。