Sapui5 实时更新项目数

Sapui5 实时更新项目数,sapui5,Sapui5,我有一个要求,我需要现场更新列表项目的数量到页面的子标题。我想使用sap.ui.base.EventProvider、聚合绑定或表达式绑定。请带我过去,因为我以前从未用过 如果我删除了一个列表项,列表项的数量应该会实时更新。我猜“MyListModel”是您的模型名,其中有如下内容: [ {objectName: "object1"}, {objectName: "object2"}, {objectName: "object3"} ] 然后尝试: <Page title="

我有一个要求,我需要现场更新列表项目的数量到页面的子标题。我想使用
sap.ui.base.EventProvider
、聚合绑定或表达式绑定。请带我过去,因为我以前从未用过

如果我删除了一个列表项,列表项的数量应该会实时更新。

我猜“MyListModel”是您的模型名,其中有如下内容:

[
  {objectName: "object1"},
  {objectName: "object2"},
  {objectName: "object3"}
]
然后尝试:

<Page title="{= ${myListModel>/}.length}">

客户端型号 如果使用了客户端模型,例如
JSONModel
(即假设所有数据都已在客户端可用),并且如果目标集合是数组,则简单的表达式绑定就足够了:

title="{= ${myJSONModel>/myProducts}.length}"
  • 示例1(ClientModel):
  • 示例2(ClientModel):
正如您在上面的示例中所看到的,当项目数量发生变化时,框架会通知,最终会自动更新属性值

服务器端型号(如OData) 奥达塔V2 使用
sap.m.ListBase
特别是如果启用了“增长”功能,则此事件可以方便地始终获取框架分配给事件参数
total
的新计数值

[如果
growing
属性设置为
true
,则可以使用参数
total
]

  • 样本3(v2.ODataModel)

onUpdateFinished:函数(事件){
const reason=event.getParameter(“原因”);/“筛选”、“排序”、“刷新”、“增长”。。
const count=event.getParameter(“total”);//使用此$count值执行某些操作
// ...
},
控件更新和处理项目绑定后,将触发
updateFinished
事件。事件参数
“total”
提供根据过滤、排序等操作请求的
$count

使用
sap.ui.model.Binding中的
change
事件 此事件可应用于方便使用的任何绑定,尤其是当控件不支持
updateFinished事件时

someAggregation=”{
路径:'/Products',
活动:{
更改:'.onChange'
}
}"
onChange:函数(事件){
const reason=event.getParameter(“reason”);//请参阅:sap.ui.model.ChangeReason
const count=event.getSource().getLength();
// ...
},
  • event.getSource()
    返回相应的(列表)绑定对象,其结果为
    $count
    (或
    $inlinecount
    )。我们可以通过调用
  • 一个缺点是,中没有
    “增长”
    原因。但是如果控件可以增长,那么它可能是从支持
    updateFinished
    事件的ListBase派生的
手动触发器(仅在V2中) 如果根本没有列表绑定,但仍然需要计数值,我们可以始终手动发送请求以获取计数值。为此,将系统查询
$count
附加到读取方法中的路径:

myV2ODataModel.read(“/Products/$count”{
筛选器:[/*…*/],
成功:功能(数据){
const count=+data;//“+”将字符串解析为数字。
// ...
}.绑定(此),
}) 
小田V4 请看一下文档主题