SAPUI5:尽管有JSON数据绑定,但表没有内容

2020-09-28 05:04发布

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

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


嗨社区

我需要您的帮助,因为我的SAPUI5表有问题。

缩短一些背景信息。 当我使用静态JSON文件时,以下代码示例运行良好。 现在,我集成了oData服务,但是JSON的结构保持不变。
尽管没有其他代码更改,但该表仅显示"无数据"。

Main.view.xml:

 <表id =" table" width =" auto" items =" {路径:'/systemOverview',排序器:{路径:'systemOverview',降序:false}}">
 <列>
 
             
 
 <栏目>
 
 
 
 <项目>
 
 <单元格>
 
   
 
 
 
  
 
 
 
 
 
 

Main.controller.js:

 onInit:function(){
 this.getView()。setModel(new JSONModel({
 系统总览: []
 }));
 },

/* 
其他一些函数,例如调用fillTable()
*/ fillTable:函数(数据){ this.getView()。getModel()。setProperty(" systemOverview",data); console.log(JSON.stringify(data)); }

" console.log(JSON.stringify(data));"的结果

 [
{
" systemName":" sys1",
"数量":
{
" case1":29,
" case2":29,
" case3":29,
" case4":29,
" case5":29
}
}
]

我希望有人能找到我在代码中犯的错误,因为我不知道如何解决,并且控制台中没有错误消息...

提前谢谢!

蒂姆

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

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


嗨社区

我需要您的帮助,因为我的SAPUI5表有问题。

缩短一些背景信息。 当我使用静态JSON文件时,以下代码示例运行良好。 现在,我集成了oData服务,但是JSON的结构保持不变。
尽管没有其他代码更改,但该表仅显示"无数据"。

Main.view.xml:

 <表id =" table" width =" auto" items =" {路径:'/systemOverview',排序器:{路径:'systemOverview',降序:false}}">
 <列>
 
             
 
 <栏目>
 
 
 
 <项目>
 
 <单元格>
 
   
 
 
 
  
 
 
 
 
 
 

Main.controller.js:

 onInit:function(){
 this.getView()。setModel(new JSONModel({
 系统总览: []
 }));
 },

/* 
其他一些函数,例如调用fillTable()
*/ fillTable:函数(数据){ this.getView()。getModel()。setProperty(" systemOverview",data); console.log(JSON.stringify(data)); }

" console.log(JSON.stringify(data));"的结果

 [
{
" systemName":" sys1",
"数量":
{
" case1":29,
" case2":29,
" case3":29,
" case4":29,
" case5":29
}
}
]

我希望有人能找到我在代码中犯的错误,因为我不知道如何解决,并且控制台中没有错误消息...

提前谢谢!

蒂姆

付费偷看设置
发送
5条回答
野沐沐
1楼 · 2020-09-28 05:58.采纳回答

感谢您的答复!

问题出在onInit()函数上。 我不知道为什么,但是该函数被调用了两次,因此该模型不可访问。

我如下解决了该问题:

 sap.ui.define([
 " sap/ui/core/mvc/Controller",
 " sap/ui/model/json/JSONModel"
 ],函数(Controller,JSONModel){
 "使用严格";

 var标志= 0;

 return Controller.extend(" LicenseManagementDashboard.controller.Main",{

 onInit:function(){
 如果(flag === 0){
 this.getView()。setModel(new JSONModel({
 系统总览: []
 }));
 标志++;
 }
 },
 
hengyuye
2楼-- · 2020-09-28 06:04

这似乎是不正确的,因为如果我使用" console.log(this.getView()。getModel())"记录模型,则可以看到 数据存储在其中:

闻人可可
3楼-- · 2020-09-28 05:59

路径:"/img/systemOverview"似乎不是由以下代码返回的JSON文件的一部分 o数据服务。 只需保留"/"而不是systemOverview

haha101010
4楼-- · 2020-09-28 06:08

路径应为/oData/systemOverview

打个大熊猫
5楼-- · 2020-09-28 05:46

嗨,蒂姆,

1。 如果您将OData模型用作应用程序的默认模型,则"/img/systemOverview"将触发对后端系统的调用。 在这种情况下,应将"/img/systemOverview"替换为相应的实体集名称。 另外,您必须从单元格的绑定路径中删除"/",因为这应该是相对路径。
2。 为您的JSON模型提供一些ID,然后尝试。

 this.getView()。setModel(new JSONModel({
 systemOverview:[]})," oModel"); 

对于绑定项:

用于属性绑定:

  

一周热门 更多>