绑定完成后执行操作

duc*_*s13 4 sapui5

我写这部分是为了用选择控制器绑定OData信息:

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);
Run Code Online (Sandbox Code Playgroud)

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

Bog*_*ann 12

将处理程序附加到Binding提供的事件:

<Select items="{
  path: '/Countries',
  events: {
    dataRequested: '.onCountriesRequested',
    dataReceived: '.onCountriesReceived',
    change: '.onCountriesChange'
  }
}">
Run Code Online (Sandbox Code Playgroud)

这些事件不仅可以应用于ListBindings,还可以应用于所有绑定.注: PropertyBindings不会触发任何要求,所以没有dataRequesteddataReceived他们.

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

在这种情况下,您将附加处理程序changedataReceived事件以通知"完整"绑定.

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


列表,m.Table,m.Tree,...

或者,UI5 updateFinished为派生的控件提供事件sap.m.ListBase.它与change事件类似,但提供了更多信息,例如条目的其他"Growing" 原因,实际总数.

<List
  updateFinished=".onCountriesUpdateFinished"
  items="..."
>
Run Code Online (Sandbox Code Playgroud)
onCountriesUpdateFinished: function(event) {
  const reasonForUpdate = event.getParameter("reason"); // "Refresh", "Growing", "Filter", "Sort", "Context", ...
  const currentlyLoadedNumberOfCountries = event.getParameter("actual");
  const totalNumberOfCountries = event.getParamter("total") // Value of $count
  // ...
}
Run Code Online (Sandbox Code Playgroud)


Qua*_*ure 3

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

绑定本身应该是相当静态的(即它不会改变),因此您只对数据何时更改感兴趣


编辑这里是一个示例实现:

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

请参阅https://openui5.hana.ondemand.com/docs/api/symbols/sap.ui.model.Model.html#attachRequestCompleted了解更多信息