面包屑导航功能

时间:2018-11-14 15:42:14

标签: javascript json tree sapui5 breadcrumbs

我正在尝试扩展基本的tree示例,并在顶部添加面包屑导航。

查看

<mvc:View
controllerName="sap.m.sample.Tree.Page"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m">
<Breadcrumbs id="bread" currentLocationText="{/sNode}">
</Breadcrumbs>
    <Tree
        id="Tree"
        items="{path: '/'}"
        toggleOpenState="onToggle">
        <StandardTreeItem id="item" title="{title}" type="Navigation" press="test"/>
    </Tree>

控制器

  onInit: function(evt) {
    // set explored app's demo model on this sample
    var oModel = new JSONModel(jQuery.sap.getModulePath("sap.m.sample.Tree", "/Tree.json"));
    var data = this.getView().setModel(oModel);
  },
  onToggle: function(oEvent) {
    var lItem = oEvent.getParameters().itemContext.sPath;
    var lItem2 = oEvent.getParameter("itemContext");
    var nodes = this.getView().getModel().getProperty(lItem);
    var sNode = this.getView().getModel().getProperty(lItem).title;
    var oBreadCrumbs = this.byId("bread");
    if (!(paths.includes(lItem))) {
      arr.push(sNode);
    } else {
      var index = arr.indexOf(sNode);
      paths.length = index + 1;
      arr.length = index + 1;
    }
    paths.push(lItem);
    oBreadCrumbs.removeAllLinks();
    for (var i = 0; i < arr.length; i++) {
      if (i == arr.length - 1) {
        oBreadCrumbs.setCurrentLocationText(arr[i]);
      } else {
        var link = new sap.m.Link({
          text: arr[i],
          press: [this.tryOne, oBreadCrumbs]
        });
        oBreadCrumbs.addLink(link);
      }
    }
  },
  tryOne: function(oEvent) {
    var t = oEvent.getSource();
    var n = this.indexOfLink(t);
    this.removeAllLinks();
    this.setCurrentLocationText(arr[n]);
    for (var i = 0; i < n; i++) {
      var li = new sap.m.Link({
        text: arr[i],
        press: ? ? ? ?
      });
      this.addLink(li);
    }
  },

所以我现在要做的是在树的节点展开时,将标题作为链接添加到面包屑导航中。我现在想要的是,当用户按下面包屑导航上的链接时,应删除所有被按下的链接,而被按下的链接应为当前位置。

使用功能tryOne,我将通过查找最后单击的元素来重复整个过程,将其添加到数组中,删除所有内容,最后将数组再次附加到链接控件。

我的问题是此功能仅在第一次正常工作。第二次之后,它将停止工作。有什么想法吗?

for example here, if I click on link Node1-1-2, this should become the currentLocation and the links after that should be removed.

0 个答案:

没有答案