gpt4 book ai didi

javascript - 避免 View 中出现错误的请求

转载 作者:行者123 更新时间:2023-11-28 18:01:03 25 4
gpt4 key购买 nike

我有一个 xml 文件,其中包含这样的列表

view.xml

<List
id="myList"
items="{
path: '/myEntitySet'
}">
<items>
<StandardListItem
title="{myTitle}" />
</items>
</List>

“myEntitySet”需要动态过滤器参数 (myId) 才能正常响应,否则我将从后端收到 404 错误。所以我使用 JavaScript 将过滤器添加到我的列表中。

controller.js

var oBinding = this.getView().byId("myList").getBinding("items");
var aFilter = [ new sap.ui.model.Filter("myId", sap.ui.model.FilterOperator.EQ, myDynamicId ) ];

oBinding.filter({
filters: aFilter
});

问题:“View-Request”在“controller-Request”之前触发几毫秒,并且请求失败(404 错误)。我不想通过 JS 渲染列表以避免来自 View 的请求。有没有办法阻止查看请求?

最佳答案

有几种方法可以做到这一点。

最简单的方法是直接在 XML 中进行过滤,但我假设您的动态过滤参数无法在设计时写入,因此该选项不适用。

您只能在 Controller 中进行绑定(bind)。因为您说过您不想在 JavaScript 中“渲染”列表,所以您可以使用以下代码片段。

查看:

<List id="myList">
<dependents>
<StandardListItem id="myItem" title="{myTitle}" />
</dependents>
</List>

Controller :

this.byId("myList").bindItems("/myEntitySet", {
template: this.byId("myItem"),
//optional:
templateShareable: true
});

另一种可能性是使用 OData 模型 (v2) 的延迟批处理组功能。基本上,您可以通过为批量请求提供 groupId 将请求分组到单个批量请求中。

如果您将此类组标记为延迟,则在调用 OData 模型的 submitChanges 方法时会提交该组(及其包含的请求)。查看 ODataListBinding 的文档和 ODataModel .

查看:

<List id="myList" items="{
path: '/myEntitySet',
parameters: {batchGroupId: 'myGroup'}
}">
<StandardListItem title="{myTitle}" />
</List>

Controller :

//in onInit
this.getModel().getDeferredGroups(["myGroup"]);

//after you added the filter
this.getModel().submitChanges();

关于javascript - 避免 View 中出现错误的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43540822/

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