我有一个在网格中呈现的 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
};
}