ノックアウトマッピングの使用に問題があります。
私はFormBuilderViewModelを持っており、データのロードと保存を含む一連の関数が含まれています。最初の行(self = thisの後)は次のとおりです。
this.form = ko.mapping.fromJS({blueprint_identifier: undefined, name: undefined, description: undefined, pages : []})
'this.form'を3つのメタ変数と1つの配列で初期化します。
次に、データをロードします(これもFormBuilderViewModelにあります)。
ko.mapping.fromJSON(allData, {}, self.form);
変数allData
はAJAXリクエストから取得され、正確に次のものが含まれます。
{"blueprint_identifier":1347437911,"name":"test","description":"test","pages":[]}
問題は、ロードされたJSONが私のページに表示されないことです。データをロードした後の出力console.log(this.form)
は空です。スクリプト全体は次のとおりです(関数などを除く)。
var FormBuilderViewModel = function(data){
var self = this;
this.form = ko.mapping.fromJS({
blueprint_identifier: undefined,
name: undefined,
description: undefined,
pages : []
})
$.getJSON("x", function(allData) {
if(){
console.log("I'm here");
ko.mapping.fromJSON(allData, {}, self.form);
}else{
// not relevant
}
});
console.log(self.form);
};
出力は「I'mhere」(ロードポイントに到達)、次に空の「form」オブジェクトです。
ここで何が欠けていますか?