嗯,我不认为我使用的是正确的术语,但我会尝试解释相同的内容。 我们有一个使用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);
答案 0 :(得分:2)
额外属性是jQuery expando属性,如果将事件附加到数组,则会添加该属性:
$([myArray]).on("myevent" ...)
JsViews附加了一个arrayChange事件处理程序 - 这就是你看到额外属性的原因。
然而,jQuery属性是一个具有特殊属性toJSON: function() {}
的对象。
该函数不返回任何内容的事实告诉JSON.stringify()
忽略该属性 - 在序列化期间跳过它。
因此,如果您使用JSON.stringify
序列化数据并将其发送到服务器,则该属性根本不会显示...