Функциональность в навигации по сухарям - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь расширить базовый пример 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.

...