gpt4 book ai didi

javascript - SAPUI5 oDataModel setDeferredGroups 自动触发请求

转载 作者:行者123 更新时间:2023-11-29 23:36:00 26 4
gpt4 key购买 nike

当我有一个 oDataModel v2使用双向绑定(bind),我调用 setDeferredGroups() 方法,然后它会将 所有 数据更改的默认行为更改为不再延迟。

我们可以在this documentation中看到这里在“双向绑定(bind)”下它说:

“默认情况下,所有更改都收集在一个名为“更改”的批处理组中,该批处理组被设置为延迟。要提交更改,请使用 submitChanges()。”

这是真的。如果我调用函数setDeferredGroups(),那么我所有的数据更改都不会自动触发任何请求。在我按预期手动调用 oModel.submitChanges() 之前,不会发送任何请求。

现在在“批处理”标题下的同一篇文章中:

“对于每个绑定(bind)和每个手动请求,都可以指定一个 groupId。属于同一组的所有请求都被捆绑到一个批处理请求中。没有 groupId 的请求被捆绑在默认批处理组中。”

我决定我希望能够通过给他们一个 groupId 来插入一组更改,所以我调用指南中所示的函数,如下所示:

oModel.setDeferredGroups(["myGroupId"]);

然后,例如,我创建一个条目,如下所示:

oModel.createEntry("/RANDOM_ENTITY", {
groupId : "myGroupId"
});

而且我根本没有更改其他代码。这按预期工作,我能够调用传入 groupId 的 submitChanges() 函数:

oModel.submitChanges({
groupId : "myGroupId"
});

现在的问题是,在执行此操作时,它将所有未设置此 groupId 的更改的默认行为设置为不延迟(尽管所有更改均按标准延迟)。默认情况下所有更改都是延迟的,但如果您调用此函数,它会更改它,以便具有给定 groupId 的更改被延迟。

这意味着每次我在没有设置 groupId 的情况下更改任何实体的数据时,它都会触发对服务器的请求。例如。更改屏幕上的双向绑定(bind)字段将在失去焦点的那一秒发送网络请求。而不是等待我调用 oModel.submitChanges()

所以我的问题是:

  1. 有没有办法将所有请求的默认行为设置回延迟?
  2. 如果不通过设置 groupId,我如何submitChanges() 更改的子集?

最佳答案

原来名为“changes”的默认延迟组被“setDeferredGroups”覆盖,但可以先通过“getDeferredGroups”检索。

所以我需要:

oModel.setDeferredGroups(oModel.getDeferredGroups().concat(["myGroupId"]));

关于javascript - SAPUI5 oDataModel setDeferredGroups 自动触发请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333396/

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