2016-10-04 54 views
-1

我试图在SAPUI5中将Json值转换为小写。但是我得到的错误是sapui5中的未捕获(承诺中)引用错误。我的代码如下。将Json值转换为小写“未捕获(承诺中)ReferenceError”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; 
    }, 

错误是当我从方法内部调用lowerCase方法。有没有其他方法可以将价值转换为小写?或者我可以如何解决这个问题?

+0

也许你的意思'this.lowerCase(OBJ [道具])':数据已经被加载后,您可以连接到requestCompleted事件模型做转换的?这似乎是一种不是普通功能的方法。 – Bergi

+0

我试过那个但不工作 –

+0

然后请发布整个错误消息。另请发布[mcve],您目前的片段看起来像是对象文字和单独一行的摘录,请更改它以便我们可以运行它。 – Bergi

回答

0

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

但是要小心JSONModel是异步加载的。所以oModelSamhengiTimeSeris.getData()的结果可能在它被调用时是空的对象。

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; 
}, 
+0

很好,谢谢 –

相关问题