Sapui5 在绑定完成后执行操作
我编写此部分是为了将OData信息与select控制器绑定: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
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
应该是首选解决方案