我有一个组合框,其中填充了一个odata调用。
从主页上,我导航到带有此组合框的页面,并且希望此组合框选择ODATA调用的第一项作为默认/选定项。
我使用bindAggregation在onInit()
函数中填充组合框
绑定对象后,我想阅读列表并选择第一个列表并选择它。
bindComboBox: function() {
var comboBox = oView.byId("ComboBoxID");
comboBox.bindAggregation("items", {
path: path,
parameters: param,
sorter: sorter,
template: template,
filters: filter,
events: {
dataReceived: this.selectFirstItemFunction()
}
}
selectFirstItemFunction: function() {
var comboBox = oView.byId("ComboBoxID");
var comboBoxItems = comboBox.getItems(); // This ends up being undefined.
comboBox.setSelectedItem(comboBoxItems[0]);
}
执行此操作时,var comboBoxItems
中的selectFirstItemFunction()
始终为空/未定义。
我还尝试将selectFirstItemFunction()
放在onAfterRendering()
内,但这也不起作用。
如果页面已经加载,并且我执行了selectFirstItemFunction()
,则组合框将按预期工作。
关于如何正确装入组合框的任何想法吗?
答案 0 :(得分:2)
您没有将“ selectFirstItem”功能附加到事件。您在执行“ bindComboBox”时直接调用它。
对此进行更正:
dataReceived: this.selectFirstItemFunction.bind(this)
但是要小心,因为如果已经缓存了数据,则可能不会触发“ dataReceived”。所以也许您想使用“更改”事件
change: this.selectFirstItemFunction.bind(this)