グリッドにレンダリングされる observableArray があります。ユーザーが行をクリックすると、ダイアログ フォームがポップアップ表示され、ユーザーは選択した項目を編集できます。ユーザーが変更を更新またはキャンセルできるようにしたいのですが、選択したレコードは監視可能であるため、変更はすぐに行われます。
ユーザーが「更新」をクリックしたときにのみデータが更新されるように、選択したレコードを observableArray から分離するにはどうすればよいですか?
これが私の問題の簡略版です-私のフィドル
function Type(data) {
this.id = data.id;
this.name = ko.observable(data.name);
};
function Location(data) {
this.id = data.id;
this.name = ko.observable(data.name);
this.state = ko.observable(data.state);
this.headline = ko.observable(data.headline);
this.type = ko.observable(new Type(data.type));
};
function ViewModel() {
var self = this;
self.types = types;
self.locations = ko.observableArray(ko.utils.arrayMap(seedData, function(item) {
return new Location(item);
}));
self.selectedLocation = ko.observable();
self.edit = function(item) {
self.selectedLocation(item);
};
self.cancel = function() {
self.selectedLocation(null);
};
self.update = function(item) {
//do something here to push updated Location to locations observableArray
};
}