我正在努力学习如何使用KnockOut ......从来没有过,我已经在已经使用它的网站上被扔进了火中。这里的一切都很好:
function MasterViewModel() {
var self = this;
self.Supervisors = ko.mapping.fromJS(@Html.Raw(JsonConvert.SerializeObject(Model.Supervisors)));
self.AddSupervisor = function(request) {
var request = new Supervisor({
FullName: $('#SupervisorId option:selected').text(),
SupervisorId: $('#SupervisorId option:selected').val()
});
self.Supervisors.push(request);
// do server side call here
}
self.RemoveSupervisor = function(request) {
if (request.SupervisorID() > 0)
{
self.Supervisors.remove(request);
// do server side call here
}
}
}
好。一切都很好:
但是,当我尝试删除刚刚添加的项目时,我明白了:
未捕获的TypeError:request.SupervisorID不是函数
SupervisorId
是一个下拉列表。 AddSupervisor
来电是通过按钮进行的。如果需要,我可以显示HTML。此外,虽然我可能不需要if
:
if (request.SupervisorID() > 0)
即使没有它,我也需要添加的主管的ID。
答案 0 :(得分:1)
我猜测服务器端不区分大小写,并且正在使用SupervisorId
加载数据。添加新文件后,您将使用d
(小写SupervisorID
)创建新文件。服务器必须接受它。 JavaScript不是。
您需要更改新创建的用户才能使用RemoveSupervisor
,或者让SupervisorId
函数使用material button
- 无论哪种更改都会对您的整体结构更有意义。