淘汰赛:无法删除新添加的项目

时间:2017-05-19 15:17:45

标签: javascript jquery knockout.js

我正在努力学习如何使用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不是函数

enter image description here

SupervisorId是一个下拉列表。 AddSupervisor来电是通过按钮进行的​​。如果需要,我可以显示HTML。此外,虽然我可能不需要if

if (request.SupervisorID() > 0)

即使没有它,我也需要添加的主管的ID。

1 个答案:

答案 0 :(得分:1)

我猜测服务器端不区分大小写,并且正在使用SupervisorId加载数据。添加新文件后,您将使用d(小写SupervisorID)创建新文件。服务器必须接受它。 JavaScript不是。

您需要更改新创建的用户才能使用RemoveSupervisor,或者让SupervisorId函数使用material button - 无论哪种更改都会对您的整体结构更有意义。