无法将JSON绑定到sap.m.Tree或sap.ui.table.TreeTable

2020-08-26 12:19发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

当前,我正在尝试将简单的JSON绑定到TreeTable和Tree中,以便进行一些测试。 但是我看不到我在犯错。

我将向您展示我使用的所有代码,所以也许有人可以帮助我找到问题。

首先,这是我要绑定到表的JSON结构:

 [
 {
 " NodeID":1
 " HierarchyLevel":0,
 "描述":" 1",
 " ParentNodeID":null,
 " DrillState":"展开"
 },
 {
 " NodeID":2
 " HierarchyLevel":0,
 "描述":" 2",
 " ParentNodeID":null,
 " DrillState":"展开"
 }
 ] 

以下是我对此问题的重要看法:

 
 
 
 
 <内容>
 
 
 
 
 

 
 
 <内容>
 
 
 
 
 

 
 
 

 
 <表:列>
 
 
 
 
 
 
 
 
 
 

如您所见,我有一个FlexBox,其中包含4个用于测试不同绑定方式的表。

  • 前两个是相同的Sap.m.树,只是ID不同
  • 第三个是另一棵Sap.m.Tree,但结构不同。 我已使用此SAPUI5官方示例中的代码:示例
  • 最后一个是带有一列的Sap.ui.table.TreeTable

现在,让我们进入我的控制器,在这里我尝试执行所有绑定:

 onInit:function(){
 var oModel = new sap.ui.model.json.JSONModel(" model/data.json");
 this.getView()。setModel(oModel);

 var oTable = this.getView()。byId('TreeTableBasic');
 oTable.bindRows("/");

 var oTree = this.getView()。byId('Tree');
 oTree.bindItems({
 路径:"/",
 tempalte:this.byId('treeTemplate')
 });

 var oTree2 = this.getView()。byId(" Tree2");
 var oItemTemplate = new sap.ui.core.ListItem({text:" {NodeID}"});
 oTree2.bindItems({
 路径:"/",
 tempalte:oItemTemplate,
 });
 },
 

如您所见,首先创建JSON模型并将其设置为视图。

一旦创建并设置了模型:

  • 我从sap.ui.table.TreeTable调用方法bindRows以完成绑定。 效果很好,我的表按预期显示了数据(仅一列,没有层次结构)
  • 我从sap.m.Tree调用方法bindItems,以复制我对TreeTable所做的工作。 我使用相同的路径,并且仅通过获取在XML上创建的模板来使用模板。
    我认为这应该可行,但会引发下一个错误:
未捕获的错误:缺少元素sap.m.Tree的聚合项的模板或工厂功能

由于我没有丢失模板,所以我不明白为什么会引发此错误

  • 由于该错误,我决定创建完全相同的Tree(Tree3),并在控制器上创建自己的模板,如您在代码中所见(。
    但此Tree抛出相同的错误。 在这一点上,对我来说没有任何意义。
  • 由于此时无济于事,所以我决定从SAPUI5官方网站复制完全相同的示例。
    在该示例上,您可以看到它们创建了一个非常简单的Tree,将模型绑定到视图,而没有进行任何操作 其他。
 SAPUI官方代码:
   视图:
 
 
 

    控制器:
 onInit:函数(evt){
 var oModel = new JSONModel(sap.ui.require.toUrl(" sap/m/sample/Tree")+"/Tree.json");
 this.getView()。setModel(oModel);
 } 

如您所见,示例代码和我的代码是相同的,唯一的区别是我的代码无法正常工作。
我认为问题可能出在JSON,因为示例代码与我的代码不同,但是 我尝试用示例一替换我的,但NO DATA文本仍会出现在我的树上。

我也认为问题出在项目路径上,但没有意义,因为它正在ui.table.TreeTable上工作

所以现在,我已经没有想法了,我来这里看看是否有人可以指出我所犯的错误,这必须是一个错误,因为官方站点中的示例应该可以工作。

提前通知您。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

当前,我正在尝试将简单的JSON绑定到TreeTable和Tree中,以便进行一些测试。 但是我看不到我在犯错。

我将向您展示我使用的所有代码,所以也许有人可以帮助我找到问题。

首先,这是我要绑定到表的JSON结构:

 [
 {
 " NodeID":1
 " HierarchyLevel":0,
 "描述":" 1",
 " ParentNodeID":null,
 " DrillState":"展开"
 },
 {
 " NodeID":2
 " HierarchyLevel":0,
 "描述":" 2",
 " ParentNodeID":null,
 " DrillState":"展开"
 }
 ] 

以下是我对此问题的重要看法:

 
 
 
 
 <内容>
 
 
 
 
 

 
 
 <内容>
 
 
 
 
 

 
 
 

 
 <表:列>
 
 
 
 
 
 
 
 
 
 

如您所见,我有一个FlexBox,其中包含4个用于测试不同绑定方式的表。

  • 前两个是相同的Sap.m.树,只是ID不同
  • 第三个是另一棵Sap.m.Tree,但结构不同。 我已使用此SAPUI5官方示例中的代码:示例
  • 最后一个是带有一列的Sap.ui.table.TreeTable

现在,让我们进入我的控制器,在这里我尝试执行所有绑定:

 onInit:function(){
 var oModel = new sap.ui.model.json.JSONModel(" model/data.json");
 this.getView()。setModel(oModel);

 var oTable = this.getView()。byId('TreeTableBasic');
 oTable.bindRows("/");

 var oTree = this.getView()。byId('Tree');
 oTree.bindItems({
 路径:"/",
 tempalte:this.byId('treeTemplate')
 });

 var oTree2 = this.getView()。byId(" Tree2");
 var oItemTemplate = new sap.ui.core.ListItem({text:" {NodeID}"});
 oTree2.bindItems({
 路径:"/",
 tempalte:oItemTemplate,
 });
 },
 

如您所见,首先创建JSON模型并将其设置为视图。

一旦创建并设置了模型:

  • 我从sap.ui.table.TreeTable调用方法bindRows以完成绑定。 效果很好,我的表按预期显示了数据(仅一列,没有层次结构)
  • 我从sap.m.Tree调用方法bindItems,以复制我对TreeTable所做的工作。 我使用相同的路径,并且仅通过获取在XML上创建的模板来使用模板。
    我认为这应该可行,但会引发下一个错误:
未捕获的错误:缺少元素sap.m.Tree的聚合项的模板或工厂功能

由于我没有丢失模板,所以我不明白为什么会引发此错误

  • 由于该错误,我决定创建完全相同的Tree(Tree3),并在控制器上创建自己的模板,如您在代码中所见(。
    但此Tree抛出相同的错误。 在这一点上,对我来说没有任何意义。
  • 由于此时无济于事,所以我决定从SAPUI5官方网站复制完全相同的示例。
    在该示例上,您可以看到它们创建了一个非常简单的Tree,将模型绑定到视图,而没有进行任何操作 其他。
 SAPUI官方代码:
   视图:
 
 
 

    控制器:
 onInit:函数(evt){
 var oModel = new JSONModel(sap.ui.require.toUrl(" sap/m/sample/Tree")+"/Tree.json");
 this.getView()。setModel(oModel);
 } 

如您所见,示例代码和我的代码是相同的,唯一的区别是我的代码无法正常工作。
我认为问题可能出在JSON,因为示例代码与我的代码不同,但是 我尝试用示例一替换我的,但NO DATA文本仍会出现在我的树上。

我也认为问题出在项目路径上,但没有意义,因为它正在ui.table.TreeTable上工作

所以现在,我已经没有想法了,我来这里看看是否有人可以指出我所犯的错误,这必须是一个错误,因为官方站点中的示例应该可以工作。

提前通知您。

付费偷看设置
发送
1条回答
蓋茨
1楼 · 2020-08-26 12:40.采纳回答

发现了问题。

我必须写:

 items =" {/}" 

代替:

 items =" {路径:'/'}" 

一周热门 更多>