将Json值转换为小写"Uncaught(in promise) "SAPUI5

convert Json value into lower case "Uncaught(in promise ) ReferenceError" SAPUI5

本文关键字:quot in promise SAPUI5 Uncaught Json 转换      更新时间:2023-09-26

我试图在SAPUI5中将Json值转换为小写。但我得到的错误是未捕获(在承诺)参考错误在sapui5。我的代码如下:

   onInit : function(evt)
    {
      var oModelSamhengiTimeSeris = new sap.ui.model.json.JSONModel("/admin/model/samhengitimeserieswriter.json");                              console.log(this.lowerCase(oModelSamhengiTimeSeris));
    },
    lowerCase: function (obj) {
    for (var prop in obj) {
     if (typeof obj[prop] === 'string') 
      {
       obj[prop] = obj[prop].toLowerCase();
      }
    if (typeof obj[prop] === 'object')
     {
      lowerCase(obj[prop]);
     }
    }  
    return obj;
    },

错误是当我从方法内部调用小写方法。还有其他的方法将值转换成小写吗?或者我该如何解决这个问题?

您正在使用sapui5的JSONModel类的实例调用lowerCase()方法。该实例可能包含循环引用。你应该调用你的lowerCase()方法与数据你的JSONModel: this.lowerCase(oModelSamhengiTimeSeris.getData())

但是要注意JSONModel是异步加载的。所以oModelSamhengiTimeSeris.getData()的结果在它被调用的时候可能是一个空对象。您可以附加到模型的requestCompleted事件,以便在加载数据后执行转换:

onInit : function(evt)
{
  var oModelSamhengiTimeSeris = new sap.ui.model.json.JSONModel("/admin/model/samhengitimeserieswriter.json");
  oModelSamhengiTimeSeris.attachRequestCompleted(function(){
    var data = oModelSamhengiTimeSeris.getData();
    this.lowerCase(data);
    oModelSamhengiTimeSeris.setData(data); //To update bindings
  },this);
},
lowerCase: function (obj) {
  for (var prop in obj) {
    if (typeof obj[prop] === 'string') 
    {
      obj[prop] = obj[prop].toLowerCase();
    }
    if (typeof obj[prop] === 'object')
    {
      this.lowerCase(obj[prop]); //has to be this.lowerCase()
    }
  }  
  return obj;
},