1

我定义了这种类型:

$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 会提交更改。但是,如果 Color 或任何其他(我有更多)自定义数据类型发生变化,JayData 不会跟踪这些对象的变化......

我如何通知 JayData 他们已更改或启用跟踪(强制执行?)?

4

1 回答 1

0

JayData 不跟踪复杂类型(如数组或自定义类型对象)的内部值。它只跟踪对值的引用。

如果您想在这种情况下强制更新,您必须制作“深拷贝”或将当前对象封装到另一个对象中以供参考更改。例如使用 jQuery:

entity.field = jQuery.extend({}, field);

您的对象值并没有真正改变,但它被封装在 jQuery 的对象中并且引用已经改变,所以 JayData 认为它的值已经改变并将更新的值发送到服务器。

这是一种解决方法,但正如我朋友所说:“你真的关心你使用了多少客户端的CPU 吗?” :)

于 2013-10-02T00:33:22.203 回答