2014-06-13 3 views
0

Dans w2ui, je peux mapper un json à une barre latérale http://w2ui.com/web/demos/#!sidebar/sidebar-1 Puis-je le faire dans openui5?Carte json au menu dans Openui5

Je veux le même résultat.

Évidemment, je ne veux pas un arbre mais une liste d'articles qui balaient à droite si j'appuie sur un élément (et visualise une liste de sous-menu) et glisse vers la gauche si j'appuie sur le bouton retour (et visualise le menu au niveau supérieur). enter image description here

Répondre

0

Je résolu mon problème: Chaque fois que je clique sur un élément de menu i appeler cette fonction dans le contrôleur de vue:

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

    }, 

Je crée à chaque fois une nouvelle istance du menu sur une nouvelle page.

0

Je pense qu'il est possible, mais pour autant que je sais que vous avez à faire un peu de travail manuel:

  1. détecter si votre noeud a un ou plusieurs nœuds enfants, et sur cette base mis l'sap.m.ListType à Navigation ou non
  2. Si votre noeud racine (fi, "/items") possède des nœuds enfants (fi, "childs"), vous devez re-lier votre liste à ce chemin d'enfant ("/items/<index_of_parent_node>/childs)
  3. pour obtenir l'effet de glisser, vous avez probablement besoin encapsuler la liste dans un sap.m.Page
  4. En fonction du niveau de nœud que vous êtes, vous devez masquer/afficher votre bouton de retour, et en appuyant liez votre liste au chemin parent

Cependant, s'il y a une approche plus simple et plus propre J'aimerais l'entendre aussi!

+0

J'implémente une solution à l'aide d'une seule page maître et je lie de façon dynamique un modèle de la liste en cours en fonction de la position actuelle dans l'arborescence de mon menu. Le problème est que bien que j'utilise une page en tant que maître, la construction splitApp ne montre aucun effet de balayage si je recharge la même page sur la colonne maître ... – padibro