需要 SAP Ui5 中 sap.m.Tree 绑定的帮助

问题描述 投票:0回答:1

我需要在我的 Ui5 应用程序中使用 Tree 控件。我在这里使用 json 模型绑定。我确实有一个包含独特的 roleids 和 odata 结果的数组,我需要使用它构建一个树结构,将其设置为我的 JSON 模型并将其绑定到 UI 控件。

第一个数组如下所示:

[0:“属性”
1:“角色”
2:“角色集合”]
长度:3
[[原型]:数组(0)

Odata.结果如下图:

0> roleid:“属性”值:“测试属性”修改者:“匿名”项目ID:“Test789”

1> 角色ID:“属性”值:“测试属性2”修改者:“匿名”项目ID:“Test789”

2> roleid:“角色”值:“测试角色”修改者:“匿名”projectid:“Test789”

3> roleid:“角色”值:“测试角色”修改者:“匿名”projectid:“Test789”

4> roleid:“RoleCollection”值:“Test RC1”修改者:“anonymous”projectid:“Test789”

5> roleid:“roleCollection”值:“Test RC2”修改者:“anonymous”projectid:“Test789”

6> roleid:“roleCollection”值:“Test RC3”修改者:“anonymous”projectid:“Test789”

使用这些我必须构建树结构 roleid 作为我的父元素,值是子元素,将其绑定到树控件:

<Tree id="Tree" items="{path: 'rModel>/'}" toggleOpenState="onPressTree">
    <StandardTreeItem id="_IDTreeItem1" title="{rModel>roleid}"   detailPress=""/>  
</Tree> 

如何构建树形结构?

我尝试了下面的代码,但是它没有在屏幕上显示数据:

const aUnique = [...new Set(oData.results.map(item => item.roleid))];

                console.log("array Unique"+ aUnique);

                var b = oData.results, 
        
                    mainArry = [],
                    obj = {};
                 for ( var i = 0; i < aUnique.length; i++ ) {
                    mainArry.push(aUnique[i]);
                    var temparry = [];
                    for ( var e = 0; e < b.length; e++ ) {                                             
                       if (aUnique [i] === b[e].roleid ){
                            temparry.push(b[e].value);                           
                        }                           
                    }
                    mainArry.push(temparry);
                    temparry ="";
                    obj.roleid = mainArry; 
            }
            
tree sapui5
1个回答
0
投票

我的问题已解决。我已解决此问题,如下所示:

      var dataSet = oData.results;
      
      const mainNode = [];
                                    
      const aUnique = [...new Set(oData.results.map(item => 
                      item.roleid))];

           aUnique.forEach(e => {
                  var nodeObj = {};
                 nodeObj.text = e;
                 nodeObj.node = dataSet.filter(d => { return d.roleid == e; });
           nodeObj.node.forEach( n => {
                                 n.text = n.value;
                                       });
                        mainNode.push(nodeObj);
                                    });
                        console.log(mainNode);
                       that.rdModel.setData(mainNode); //rmodel is a json model here...
                 that.getView().setModel(that.rdModel, "rdModel");

视图绑定 -->

 <Tree id="Tree" items="{path: 'rdModel>/'}" >
 <StandardTreeItem id="_IDGenStandardTreeItem1" title=" 
  {rdModel>text}"   detailPress=""/> 
 </Tree>
© www.soinside.com 2019 - 2024. All rights reserved.