2016-10-04 3 views
-1

Json ValueをSAPUI5で小文字に変換しようとしています.Sapui5でUncaught(約束)のエラーが発生しました。私のコードは以下の通りです。Jsonの値を小文字に変換する "Uncaught(in promise)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()メソッドを呼び出しています。このインスタンスには循環参照が含まれることがあります。代わりに JSONModel:this.lowerCase(oModelSamhengiTimeSeris.getData())内のlowerCase()メソッドを呼び出してください。

は、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

はうまく動作します..ありがとう –

関連する問題