Sapui5 在绑定完成后执行操作

Sapui5 在绑定完成后执行操作,sapui5,Sapui5,我编写此部分是为了将OData信息与select控制器绑定: var countrItems = new sap.ui.core.ListItem(); countrItems.bindProperty("key", "Land1"); countrItems.bindProperty("text", "Landx"); var CountrSelect = this.byId("CountrySelect"); CountrSelect.setModel(oModelTriptab); Cou

我编写此部分是为了将OData信息与select控制器绑定:

var countrItems = new sap.ui.core.ListItem();
countrItems.bindProperty("key", "Land1");
countrItems.bindProperty("text", "Landx");
var CountrSelect = this.byId("CountrySelect");
CountrSelect.setModel(oModelTriptab);
CountrSelect.bindItems("/Countries", countrItems);

我想在绑定完成后执行一个操作(我想选择一些可以动态更改的默认值)。

使用模型的
requestCompleted
事件处理程序来执行应该在模型数据更新后立即执行的任何操作

绑定本身应该是静态的(也就是说,它不会改变),所以您只关心数据何时改变


编辑以下是一个示例实施:

var that = this;
oModelTriptab.attachRequestCompleted(function(oEvent){
    var oSelect = that.byId("CountrySelect");
    oSelect.setSelectedKey("whatever");
});

有关更多信息,请参见将处理程序附加到由提供的事件:


这些事件不仅可以应用于ListBindings,还可以应用于所有绑定注意:属性绑定不会触发任何请求,因此不会为它们触发请求的数据或接收的数据

我想在绑定完成后执行一个操作

在这种情况下,您需要将一个处理程序附加到或事件,以获得关于“完整”绑定的通知

与将处理程序附加到
requestCompleted
相比,上述方法更具描述性,而且最重要的是绑定特定


列表,m.表格,m.树。。。 或者,UI5为从
sap.m.ListBase
派生的控件提供事件。它类似于
更改
事件,但提供了更多信息,如额外的
条目“增长”
原因、实际计数和总计数


onCountriesUpdateFinished:函数(事件){
const reasonForUpdate=event.getParameter(“原因”);/“刷新”、“增长”、“筛选”、“排序”、“上下文”。。。
const currentlyLoadedNumberOfCountries=event.getParameter(“实际”);
const totalNumberOfCountries=event.getParameter(“total”)//$count的值
// ...
}

这不是一个安全的解决方案。我使用了这个,它可能发生在请求完成时,而项目尚未呈现!这是一个完全安全的解决方案。我认为您混淆了在模型上完成的实际请求(这是OP所追求的)和正在完成的渲染(这是完全不同的,与模型无关的)。编辑:尽管如此,这个答案已经有5年多的历史了,下面Boghyon的答案是我更喜欢的答案。我的意思是,使用
dataReceived
是处理这种情况的更好方法。可能会发生
RequestCompleted
发生,然后发生
DataReceived
发生。是的,绝对同意,绑定上的
DataReceived
应该是首选解决方案