乡亲
我正在尝试显示内联表单来更新记录。请 在此处查看小提琴
SetAcceptItem
方法工作正常,我可以通过 Ajax 更新数据库记录,并且页面加载后修改的值显示在屏幕上。
但是更新的值没有被观察到并重新显示在屏幕上。我不确定这里有什么问题!
我想在不重新加载页面的情况下在屏幕上显示更新的值。
item.update(edited.title)
在SetAcceptItem
更新值。
Item = function (data) {
var self = this;
self.title = ko.observable(data.title);
self.searchTerm = ko.observable(data.searchTerm);
self.update = function (data) {
self.title(data.title);
self.searchTerm(data.searchTerm);
};
};
我的项目中的 Ajax 代码
data: sentData,
success: function (data) {
//load data
var recData = data;
self.item(recData);
},
error: function (errorMessage) {
}
让我知道是否需要添加更多详细信息
编辑
这是我的KO 代码,只是想知道为什么 item.update(edited);没有在 UI 上更新值
Item = function (data) {
var self = this;
self.title = ko.observable(data.title);
self.searchTerm = ko.observable(data.searchTerm);
self.update = function (data) {
self.title(data.title);
self.searchTerm(data.searchTerm);
alert(self.title());
};
};
var ViewModel = function (items) {
var self = this;
self.items = ko.observableArray(ko.utils.arrayMap(items, function (data) {
return new Item(data);
}));
self.TempItem ;
//selected item
self.selectedItem = ko.observable();
self.itemForEditing = ko.observable();
this.GetSelectItem = function (item) {
self.selectedItem(item);
self.itemForEditing(new Item(ko.toJS(item)));
//self.itemForEditing(item);
};
this.SetAcceptItem = function (item) {
self.TempItem = item;
var selected = ko.toJS(self.selectedItem());
var edited = ko.toJS(self.itemForEditing());
//alert(self.TempItem.title()); //edited value
//alert(selected.title); //old value
//alert(edited.title); //edited value
//alert(selected.title); //? it is old value
item.update(edited);
//write ajax query here to udpate in database
self.itemForEditing(null);
};
this.RemoveItem = function () {
self.selectedItem(null);
self.itemForEditing(null);
};
};
ko.applyBindings(new ViewModel([{
title: "walls",
searchTerm: "walls1"
}, {
title: "health",
searchTerm: "health2"
}]));