我正在尝试扩展基本的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
,我将通过查找最后单击的元素来重复整个过程,将其添加到数组中,删除所有内容,最后将数组再次附加到链接控件。
我的问题是此功能仅在第一次正常工作。第二次之后,它将停止工作。有什么想法吗?