私はKnockout JSを初めて使用します。ノックアウト js を使用したマッピングについては、Google からあまり助けが得られませんでした。サーバーからJSONを受信しています。JSON をノックアウト js マッピング ライブラリでマッピングします。プロパティに関連付けられたデータ バインドされた DOM は更新されません。私が使用しているスクリプトのフィドルを含めました。Observable にマップされる json オブジェクトに注目してください。読み込みボタンをクリックすると、json がマッピングされ、プロパティ「test」の値がタグに表示されるはずです。タグに表示されない理由はありますか?
JS フィドルに実際の例があります。
これはマッピングされている JSON です
var json = {
"id": 9,
"test": "John Doe",
"firstName": "John",
"lastName": "Doe",
"referenceNumber": "BUY-08",
"position": "Buyer",
"type": "Buyer",
"telephone": "028 82 240780",
"email": "m@email.com",
"departmentId": 3,
"departmentName": "DEPT B",
"country": "United Kingdom"
};
私のサンプルスクリプト
var masterModel = function()
{
var self = this;
self.members = ko.observableArray([]);
self.websites = ko.observableArray([]);
self.seoData = ko.observable();
self.test = ko.observable();
self.loadWebsite = function(website)
{
var json = {
"id": 9,
"test": "John Doe",
"firstName": "John",
"lastName": "Doe",
"referenceNumber": "BUY-08",
"position": "Buyer",
"type": "Buyer",
"telephone": "028 82 240780",
"email": "m@email.com",
"departmentId": 3,
"departmentName": "DEPT B",
"country": "United Kingdom"
};
self.test(ko.mapping.fromJS(json))
console.log(self.test);
}
}
var master = new masterModel();
ko.applyBindings(master);
問題は、loadWebsite をクリックしても $data.test.test が更新されないことです。