sapui5 - 单击 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 级和一个直接级别(所有其他分支应折叠。)如下图所示
知道如何实现这一目标吗?
解决方案
推荐阅读
- time-complexity - 乘以大 Theta?
- office-js - 访问共享邮箱时无法访问 Office.context.mailbox.item
- sql - 使用 Oracle SQL 在映射表中查找所有唯一关系路径
- laravel - 在 Laravel Vue 组件中添加变量以形成动作
- kotlin - Kotlin 中的函数,它在输入中获取月份的名称并返回该月的天数
- mysql - 安卓连接Mysql
- python - 如何在 Airflow 中将 DatabaseHook 对象与 PythonOperator 一起使用而不会耗尽连接?
- amazon-web-services - 您可以运行具有多个前缀的 S3 API 请求吗?
- svg - 使用嵌入的 PNG/JPG 打印宽 SVG 图像
- woocommerce - knockoutJS 订阅 observable