我有以下视图模型,用于编辑 HTML 表单中的 Person 对象:
function PersonModel(person) {
var self = this;
self.id = ko.observable(person.Id);
self.firstName = ko.observable(person.FirstName);
self.surname = ko.observable(person.Surname);
self.email = ko.observable(person.Email);
self.cell = ko.observable(person.Cell);
self.save = function (data) {
savePerson(data);
};
}
当用户想要编辑 Person 时,我将 this 的新实例绑定到编辑表单,如下所示:
function editPerson(person) {
var url = "@Url.Action("EditJson", "Person")";
$.getJSON(url, function (data) {
$("#person-detail").css("display", "block");
ko.applyBindings(new PersonModel(data), $("#person-detail")[0]);
});
}
在表单中,我将单击事件绑定到视图模型中的保存方法:
<a href="#" data-bind="click: save">Update</a>
我现在在编辑单个人员记录时遇到了多个数据库更新运行的问题,我认为这是因为我applyBindings
在同一个元素上多次调用了编辑弹出窗口。我可以确认这一点,因为我执行的数据库编辑次数与调用 ApplyBindings 的次数一样多。
现在我要么需要知道如何删除由 应用的applyBindings
绑定,或者如何只应用一次绑定,然后更新我的视图模型,而不是为每次编辑重新创建它。我更喜欢第一种方法。视图模型不应表现出单例特征。