2016-10-04 58 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

很好,謝謝 –

相關問題