gpt4 book ai didi

javascript - JayData 不跟踪自定义对象的更改

转载 作者:行者123 更新时间:2023-11-28 08:51:11 26 4
gpt4 key购买 nike

我定义了这个类型:

$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 认为它的值已经改变并将更新的值发送到服务器。

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

关于javascript - JayData 不跟踪自定义对象的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19123660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com