Javascript JayData不跟踪自定义对象上的更改
我定义了这种类型:Javascript JayData不跟踪自定义对象上的更改,javascript,jaydata,Javascript,Jaydata,我定义了这种类型: $data.Entity.extend('MyApp.Models.Vehicle', { 'ID': { 'key': true, 'type': 'Edm.String', 'nullable': true, 'required': false }, 'Maker': { 'type': 'Edm.String', 'nullable': false, 'required': true }, 'Model': { 'type': 'Edm.Stri
$data.Entity.extend('MyApp.Models.Vehicle', {
'ID': { 'key': true, 'type': 'Edm.String', 'nullable': true, 'required': false },
'Maker': { 'type': 'Edm.String', 'nullable': false, 'required': true },
'Model': { 'type': 'Edm.String', 'nullable': false, 'required': true },
'Year': { 'type': 'Edm.Int32', 'nullable': false, 'required': true },
'LicencePlate': { 'type': 'Edm.String', 'nullable': false, 'required': true },
'Color': { 'type': 'MyApp.Models.Color', 'nullable': false, 'required': false }
});
对象颜色定义如下:
$data.Entity.extend('MyApp.Models.Color', {
'Name': { 'type': 'Edm.String' },
'Value': { 'type': 'Edm.Int32', 'nullable': false, 'required': true }
});
当原语值发生更改时,JayData会提交更改。
但是,如果颜色或任何其他(我有更多)自定义数据类型发生变化,JayData不会跟踪这些对象上的变化
我如何通知JayData他们已更改或启用跟踪(强制?)JayData不跟踪复杂类型(如数组或自定义类型对象)的内部值。。 它只是跟踪对值的引用 在这种情况下,如果您想强制更新,您必须创建一个“深度副本”或将当前对象封装到另一个对象中,以便更改引用。例如,使用jQuery:
entity.field = jQuery.extend({}, field);
对象值实际上没有任何变化,但它被封装在jQuery的对象中,引用也发生了变化,因此JayData认为它的值发生了变化,并将更新后的值发送到服务器
这是一个解决办法,但正如我的朋友所说:“你真的关心你使用多少客户端的CPU吗?”:)