当我有oDataModel v2双向绑定并且我调用 setDeferredGroups()方法时,它会将所有数据更改的默认行为更改为不再被推迟。
我们可以在this documentation的“双向绑定”下看到:
“默认情况下,所有更改都在名为”changes“的批处理组中收集,并设置为deferred。要提交更改,请使用submitChanges()。”
这是事实。如果我不调用函数 setDeferredGroups(),那么我的所有数据更改都会不自动触发任何请求。在按预期手动调用 oModel.submitChanges()之前,不会发送任何请求。
现在在“批处理”标题下的同一篇文章中:
“对于每个绑定和每个手动请求,可以指定groupId。属于同一组的所有请求都捆绑在一个批处理请求中。没有groupId的请求捆绑在默认批处理组中。” EM>
我决定通过给他们一个groupId来推动一组更改,所以我像这样调用指南中所示的函数:
oModel.setDeferredGroups(["myGroupId"]);
然后,例如,我创建一个这样的条目:
oModel.createEntry("/RANDOM_ENTITY", {
groupId : "myGroupId"
});
我根本没有改变任何其他代码。这按预期工作,我可以调用传递groupId的 submitChanges()函数:
oModel.submitChanges({
groupId : "myGroupId"
});
现在的问题是,在执行此操作时,它会将未设置此groupId的所有更改的默认行为设置为不延迟(尽管所有更改都是标准延迟)。默认情况下,所有更改都会延迟,但如果您调用此函数,则会更改它,以便仅对给定groupId的更改进行更改。
这意味着每次更改任何实体的数据而不设置groupId时,它都会触发对服务器的请求。例如。更改屏幕上的双向绑定字段将在第二次失去焦点时发送网络请求。而不是等我打电话给 oModel.submitChanges()。
所以我的问题是:
答案 0 :(得分:1)
结果显示名为“更改”的默认延期群组'被'setDeferredGroups'覆盖但可以先通过' getDeferredGroups'。
检索所以我需要:
oModel.setDeferredGroups(oModel.getDeferredGroups().concat(["myGroupId"]));