关于|关于 SAP UI5 OData V4 模型的 refresh 方法
SAP UI5 OData V4 模型包括下列三种绑定实例:
- List Binding
- Context Binding
- Property Binding
应用开发人员可以使用
refresh
方法删除绝对绑定的缓存。 该方法还删除了绝对绑定的子绑定的缓存。调用刷新方法时,绑定及其子绑定不得有待处理的属性更改,即所谓的
pending property changes
.在删除缓存之前,使用绑定的 hasPendingChanges 方法检查是否存在这种类型的更改。
一个例子:
onRefreshSelectedSalesOrder : function () {
// within a sap.m.Table bound to a OData V4 list binding get the OData V4 context for the selected entity
var oSalesOrderContext = this.byId("SalesOrders").getSelectedItem().getBindingContext();
if (!oSalesOrderContext.hasPendingChanges()) {
oSalesOrderContext.refresh();
}
},
更新一个 entity 后,它可能不再匹配加载实体的集合的 query 选项,特别是 $filter。 您可以决定刷新列表绑定的上下文是否应忽略查询选项:通过将参数 bAllowRemoval 设置为 true,可以从集合的列表绑定中删除相应的上下文。
【关于|关于 SAP UI5 OData V4 模型的 refresh 方法】需要注意的是,对列表的更改(如不同的排序顺序)需要刷新整个列表。
下面是一个例子。这个应用里的
Table
控件,应用了一个过滤器,以仅显示生命周期状态为 New
的销售订单。确认销售订单时,其状态将更改为 In Process
,不再匹配过滤器。 此销售订单随后会被刷新,并将在 bAllowRemoval 标志设置为 true 时,从列表中删除。上述逻辑的代码如下:
oAction.execute("confirmSalesOrderActionGroup").then(function () {
oConfirmedSalesOrderContext.refresh(undefined, true);
// bAllowRemoval = true
});
在 XML 视图里使用绝对路径绑定,并且指定额外 query option 的例子:
...
...
上面的示例显示了一个绝对列表绑定:使用 $expand 和 $select 查询选项作为绑定参数将表的项目聚合绑定到 /SalesOrderList。 这些列使用路径 SalesOrderID、SO_2_BP/CompanyName 和 BillingStatus 定义相对绑定,并将绝对列表绑定作为父绑定。
上图 XML 视图里第二个 table 控件,即显示行项目的表格控件,使用相对绑定的语法。 由于它定义了参数,一旦它接收到它的绑定上下文,它就会触发它自己的数据服务请求。
推荐阅读
- 关于|关于 SAP UI5 OData V4 模型的 Property Binding 使用介绍
- 关于|关于 SAP UI5 OData V4 模型的类型自动识别
- SAP|SAP OData V4 模型的绝对绑定和相对绑定模式
- SAP|SAP UI5 应用开发教程之七十四 - SAP UI5 应用使用 OData V4 显示 Table 表格数据的一个陷阱试读版
- SAP|SAP UI5 OData V4 模型的构造方式
- SAP|SAP OData V4 模型支持的一些数据绑定模式
- 关于控制台输出 警告 log4j:WARN No appenders could be found for logger
- 关于Androidstudio无法获取到所有的SDk版本,需要挂国内镜像的问题
- SAP|SAP UI5 应用的 Component.js 文件是如何在运行时被加载的()
- SAP|SAP Spartacus 开源项目里 activeCartId$ 的实现