背景:マッピングプラグインを使用して、1ページのknockout.jsアプリがあります。データはWebsocket JSONを介してサーバーから更新されます。私は、アプリケーションが正常にデータ(コンソールでのデータの印刷)を受け取っていることがわかります。オブジェクトの削除/追加がある場合、ViewModelは問題は何も更新されません。Knockout.js観測可能なバインディングが更新されない(JSONマッピングで)
問題:オブジェクトのプロパティは、サーバーから更新されると、それは ViewModelには変更されません。オブジェクトのプロパティを何らかの形でそれぞれの更新で返す必要がありますか?
var userMapping = {
"users": {
key: function(data) { return ko.utils.unwrapObservable(data.id); },
create: function(options) {
// for sortable ui access
return createUser(options.data);
}
}
};
var jobMapping = {
"jobs": {
key: function(data) { return ko.utils.unwrapObservable(data.id); },
create: function(options) {
// for sortable ui access
return createJob(options.data);
},
update: function(options) {
return createJob(options.data);
}
}
};
var createJob = function(job, user) {
// leaflet init
createJobIcon(job);
// general data mapping
var result = ko.mapping.fromJS(job);
return result;
};
self.engineModel.update = function(data) {
ko.mapping.fromJS(data, userMapping, self.engineModel);
};
とのViewModelで:洞察力のための
<li data-bind="visible: canceled()==false, attr: {class: 'job-li canceled-'+canceled()+' started-'+started()+' hold-'+hold() }">
おかげでここ
はコードの関連するスニペットです!