删除JsViews添加的额外属性

时间:2013-10-13 21:48:42

标签: jsrender jsviews

嗯,我不认为我使用的是正确的术语,但我会尝试解释相同的内容。 我们有一个使用Remoting来自服务器的数据数组。现在我们使用JSViews通过更新按钮将相同的内容绑定到可编辑的表单。按下此按钮后,需要将数据发送回服务器。

我们成功地绑定了数据,但是当我们记录数据时,我们在数组和每个元素中都看到了额外的属性“ jQuery19105520686232484877 ”。

{Name: "Cheese Production Facility", RecordTypeId: "012i0000000C1lHAAS", Id: "a01i00000057WQMAA2", Number_of_Sites__c: 0, jQuery19105520686232484877: Object}

我们是否可以从初始数组中删除“ jQuery19105520686232484877 ”属性?

使用的模板

<li data-role="fieldcontain">
    <label for="propertyName">Name:</label>
    <input type="text" name="propertyName" data-link="Name" id="propertyName" value="" data-clear-btn="true"/>
</li>
 <li data-role="fieldcontain">
     <label for="dist">Dist:</label>
     <input type="text" name="dist" id="dist" data-link="Total_Number_of_Acres__c" value="" data-clear-btn="true"/>
</li>

JS代码

var propInfoObject = {
   Name: "Cheese Production Facility",
   RecordTypeId: "012i0000000C1lHAAS",
   Id: "a01i00000057WQMAA2",
   Number_of_Sites__c: 0
};
$.templates("#editPropertyTemplate").link("#editPropertyContent",propInfoObject);

1 个答案:

答案 0 :(得分:2)

额外属性是jQuery expando属性,如果将事件附加到数组,则会添加该属性:

$([myArray]).on("myevent" ...)

JsViews附加了一个arrayChange事件处理程序 - 这就是你看到额外属性的原因。

然而,jQuery属性是一个具有特殊属性toJSON: function() {}的对象。

该函数不返回任何内容的事实告诉JSON.stringify()忽略该属性 - 在序列化期间跳过它。

因此,如果您使用JSON.stringify序列化数据并将其发送到服务器,则该属性根本不会显示...