AJAX を介してモデルのプロパティの値を読み込もうとしていますが、AJAX の完了時にビューが更新されません。
ノックアウト 2.0.0 とノックアウト マッピング 2.0.3 を使用しています。
jsFiddle:
HTML:
<p>Code: <span data-bind="text: item.code"></span></p>
<p>Value: <span data-bind="text: item.value"></span></p>
JavaScript:
var ViewModel = function () {
var self = this;
self.item = ko.mapping.fromJS({ "code": "123" });
self.load = function () {
jQuery.ajax({
"success": function () {
ko.mapping.fromJS({ "value": "abc" }, {}, self.item);
},
"url": "/echo/json"
});
};
self.load();
};
ko.applyBindings(new ViewModel());
この例でitem.code
は、ビューモデルの初期化時に定義されているため の値が表示されますがitem.value
、非同期で入力されるため、 の値は表示されません。
プロパティの初期化と更新の両方で、ko.observable
とのさまざまな順列を既に試しましたが、役に立ちませんでした。ko.mapping.fromJS
item
可能であれば、すべての のプロパティを手動で初期化することは避けたいと思います。
ko.applyBindings
AJAX 呼び出しの内部に移動できることも知ってsuccess
いますが、このようなプロパティが複数あり、そのためにはキュー システムを実装する必要があり、これはやり過ぎです。
私は何を間違っていますか?それを行う正しい方法は何ですか?