SapUI5/openUI5には、サーバーからのファイルを入力したJSONModelがあります。
_var oModel = new JSONModel();
oModel.loadData("http://127.0.0.1/data/config.json");
console.log(JSON.stringify(oModel.getData()));
_
リクエストは非同期であるため、コンソールは空のoModelをログに記録します。
データがロードされた後にconsole.log()
が呼び出されるように同期させるにはどうすればよいですか?
同期ajaxリクエストの使用は、UIをブロックし、コンソールに警告が表示される可能性があるため、お勧めしません。
Model.requestCompleted
非同期にロードされたデータにアクセスするイベント:
oModel.attachRequestCompleted(function() {
console.log(oModel.getData());
});
探しているキーワードは「Deferred」です-オブジェクト-> SAPUI5でAJAXリクエストを待つことができます。
SAPUI5コンテキストについてこれを確認してください: SAPUI5 Deferred-Objectを待つ//。done()関数を待つ
モデルからattachRequestCompleted-listenerを使用できます [1]
model.attachRequestCompleted(function(){
console.log(this.getData()); //"this" is the model
});
使用する別の関数は
$.get(url, function(response){
console.log(response);
model.setData(response);
});
// or
$.ajax(url, {
success: function(){
console.log(response);
model.setData(response);
}
});
これには、jQuery.ajaxが受け入れるすべての設定でリクエストを構成できるという利点があります [2]