首页 > 解决方案 > 单击 sap.m.Tree 列表项时的面包屑并在单击面包屑时展开折叠树

问题描述

我使用下面的代码实现了 sap.m.Tree

<Tree busyIndicatorDelay="0"
                        id="TreeList" select="onToggleOpenState" mode="SingleSelectMaster"
                         items="{treeModel>/}">
                        <StandardTreeItem title="{treeModel>Description}" icon="sap-icon://attachment-e-pub" />
</Tree>

树看起来像下图

让我们假设用户点击 3.1.1.3 然后我将在面包屑栏下方

3 / 3.1 / 3.1.1 / 3.1.1.3

我已将 nodeId 维护为 (parent~child~child~child....) 以实现面包屑,下面是相同的代码

onToggleOpenState: function(oEvent){
          var sPath = oEvent.getParameter("listItem").getBindingContextPath();
          var sNodeDesc = this._oView.getModel("treeModel").getProperty(sPath).NodeId;
          var aBreadCum = sNodeDesc.split("~");
          var oBreadCrumb = this._oView.byId("breadCrumb");
          oBreadCrumb.removeAllLinks();                     
          for(var i = 0; i < aBreadCum.length; i++){
            if(i === (aBreadCum.length - 1)) {
              oBreadCrumb.setCurrentLocationText(aBreadCum[i]);
            }
            else{                  
              var oCrumbRoot = new sap.m.Link({
                text: aBreadCum[i],
                press: [this._crumbClick, this]                   
            });               
            oBreadCrumb.addLink(oCrumbRoot);
            }
          }
        },

        _crumbClick: function (oEvent, data) {

      },

我不认为这是一种适当的方式来实现与有人在后端更改 id (NodeId) 模式相同的方式,一切都会中断。那么有没有其他方法可以做到这一点?

此外,如果用户单击上面面包屑中的“3.1”,则树应展开到 3.1 级和一个直接级别(所有其他分支应折叠。)如下图所示

树展开面包屑点击

知道如何实现这一目标吗?

标签: sapui5

解决方案


推荐阅读