【发布时间】:2013-12-11 13:04:59
【问题描述】:
我想要实现的是为模型属性创建订阅。此订阅函数应通过 Ajax 调用 WebApi 更新数据库中的属性值。对于 ajax 调用,我需要三个参数:“fieldName”、“fieldValue”和“modelId”,ajax 将根据这三个参数更新数据库行。
我有很多属性,它们都需要相同的功能,所以我不想单独订阅每个属性,所以我找到了以下建议:
ko.subscribable.fn.withUpdater = function (handler) {
var self = this;
this.subscribe(handler);
//support chaining
return this;
};
添加它是如何“附加”到可观察对象的:
self.ModelId= ko.observable();
self.CompanyName = ko.observable().withUpdater(update);
update 是模型外的一些 js 函数。
但是,我有问题,因为我无法将三个参数传递给update 函数(或者我也可以换句话说 - 我需要能够在update 中获取viewModel.ModelId 属性值,以及propertyName)。
function update (propertyName, propertyNewValue, anotherPropertyValue) {
//do ajax update
}
作为 CompanyName 属性的示例,它将是:
update("CompanyName", "New Company value here", 3),
在哪里
3 == viewModel.ModelId
【问题讨论】:
-
我更新了我的答案,我很好奇你走了什么路线。
标签: javascript jquery ajax knockout.js