我是淘汰赛的新手并且意识到我的一个观察者即使在我更新时也保留了旧的价值。以下是淘汰赛代码:
ko.observable.fn.store = function () {
var self = this;
var oldValue = self();
var observable = ko.computed({
read: function () {
return self();
},
write: function (value) {
oldValue = self();
self(value);
}
});
this.revert = function () {
self(oldValue);
}
this.commit = function () {
oldValue = self();
}
return this;
}
ko.extenders.numeric = function (target, precision) {
var result = ko.computed({
read: function () {
return target().toFixed(precision);
},
write: target
});
result.raw = target;
console.log(target);
return result;
};
function glass(data) {
var self = this;
data = data || {};
// Data from model
self.id = data.id;
self.GlassId = ko.observable(data.GlassId).store();
self.Description = ko.observable(data.Description).store();
self.OldCost = ko.observable(data.OldCost).extend({ numeric: 2 });
self.NewCost = ko.observable(data.NewCost).extend({ numeric: 2 });
// Local (client) data
self.editing = ko.observable(false);
};
扩展器是一个给我一个问题的人。当我删除它并使用商店fn时,我可以更新我的模型。 如何让扩展器做我的商店fn做的事情?
更新 NewCost observable正在使用商店功能,一切运行良好。我可以在数据库中更新并保存我的新值。然后我决定使用扩展器将数值格式化为两位小数。使用扩展程序后,新值不会保存或发送到数据库。在其他方面,使用商店功能发送/保存所有其他值。