2015-04-30 75 views
0

期间复选框在淘汰赛绑定错误,我得到一个错误:获取序列化

Uncaught InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('checkbox') does not support selection.

上:

<div class="panel-heading paddingRight20px"> 
    <input style="position: absolute;" type="checkbox" data-bind="checked: IsSelectedCoverage" /> 
</div> 

当我调试的代码,我发现,这是给这个错误当我试图序列化视图模型(其中有IsSelectedCoverage可观察)。

Ajax调用我在哪里序列化:

self.finish = function() { 
    debugger; 
    var CorrespondenceData = ko.toJSON(self); 
    $.ajax({ 
     url: endPoints.Finish + '/' + self.MemberId(), 
     type: 'POST', 
     dataType: 'json', 
     data: CorrespondenceData, 
     contentType: 'application/json; charset=utf-8', 
     beforeSend: function() { 
      startSpinner(); 
     } 
    }) 

我不知道这是否是由于序列化模型。

+0

鉴于您目前的问题,我们可能无法重现您的情况,因此您需要添加更多代码和/或样本数据。 – Jeroen

+0

阅读本文ko.toJSON(self);两次希望你会明白这个错误。 – Dnyanesh

回答

1

就像@Jeroen所说的,我们至少需要看到你的视图模型来确定原因,但这里有一些可能的帮助:你依靠Knockout提供的开箱即用的序列化,但是你可以重写这个来更确定返回的内容。

如果你添加一个叫toJSON的函数给你的视图模型,那么这将被Knockout调用(尽管你可以自己轻松地调用它)。这样就可以更好地控制序列化的内容和方式。 [source]

在这种toJSON功能,如果你不想单调写下完整的JSON字符串,那么你可以建立一个非常简单的对象,并调用该toJSON

例如,假设你是视图模型有15个观测,但该服务器是感兴趣的只是2的这些,firstNamelastName

var toJSON = function() { 
    return JSON.stringify({ 
           firstName: this.firstName(), 
           lastName: this.lastName() 
          }); 

this.firstName()得到firstName的价值在相同的视图模型上可观察到。

调用该视图模型toJSONko.toJSON现在会返回一个JSON字符串,只有这两个属性

这可能是因为你有在其上发送一些意想不到回到您的视图模型的一些多余的财产服务器。

+0

或使用映射功能 –