"ViewModel.healthData.get"を2回呼び出そうとしています。どちらの場合も、このメソッドはインターネットからデータを取得します。 「データ」フィールドにデータを保持させるにはどうすればよいですか?JavaScriptオブジェクトのリテラルネストされたオブジェクト状態
function MyObject() {
this.ViewModel.healthData.get(this.ViewModel.healthData.set);
}
MyObject.prototype = {
ViewModel: {
healthData: {
data: null,
set: function (result) {
console.log("data from set");
this.data = ko.mapping.fromJS(result);
},
get: function (callback) {
if (this.data === null) {
$.ajax({
url: "/api/Health",
type: 'GET',
async: true,
}).done(callback);
} else {
console.log("direct data");
return this.data;
}
}
}
}
};
うわー、少し複雑です。正確にここで何が間違っているのかは不明です。それに加えて、「this.data」への割り当てはゲッターで単に起こらないのはなぜですか?これは非同期であることを除けば、すべての問題を解決するでしょう。解決するには、一度満たされるよりも値を返す 'Promises'を見てください。 – somethinghere
...キャッシュしますか? '$ .ajax(...)。done(data => this.data = data).done(コールバック)'のようなSth。 – GingerPlusPlus