Javascript 在组合框sapui5中提供空白选项
我正试图用json在SAPUI5中填充一个下拉框Javascript 在组合框sapui5中提供空白选项,javascript,sapui5,dropdownbox,Javascript,Sapui5,Dropdownbox,我正试图用json在SAPUI5中填充一个下拉框 new sap.ui.commons.DropdownBox(this.createId('inpExpenseType'), { selectedKey: '{ExpenseType/Id}', editable: '{/CanEditPayment}',
new sap.ui.commons.DropdownBox(this.createId('inpExpenseType'), {
selectedKey: '{ExpenseType/Id}',
editable: '{/CanEditPayment}',
required: "{/CanEditPayment}",
displaySecondaryValues: true,
items: {
path: 'parameters>/Benefits',
template: new sap.ui.core.ListItem(this.createId('liExpenseType'), {
key: '{parameters>Id}',
text: '{parameters>Name}',
additionalText: '{parameters>Code}'
})
},
layoutData: new sap.ui.layout.GridData({span: 'L6 M6 S6'})
}).attachChange(oms.app.ModelUtils.handleListItemChange)
现在根据if(status==='Approved')的条件,我只希望在下拉框中显示一个选项。我使用下面的过滤器来完成这项工作
if(state==='Approved'){
//this is the option I wish to display in the dropdownbox.
aFilters.push(new sap.ui.model.Filter("Id", sap.ui.model.FilterOperator.EQ, "33"));
}
odropdownbox.bindItems('parameters>/Benefits', oTemplate, null, aFilters);
现在我的问题是,这个选项在下拉框中被默认,所以onChange事件不会被触发
我尝试默认一个空白项,如下所示
if(State==='Approved'){
var oItem = new sap.ui.core.ListItem({
key: 'dummy',
text: '',
additionalText: ''
});
odropdownbox.insertItem(oItem,0);
odropdownbox.setSelectedKey('dummy');
}
但这并没有任何区别,我看到单个选项作为默认值填充
我怎样才能解决这个问题?是否有一些干净的方法来操作json列表?无需添加新项 在绑定项目后使用fireChange,这样就不会出现问题
odropdownbox.bindItems('parameters>/Benefits', oTemplate, null, aFilters);
odropdownbox.fireChange();
您能试试
odropdownbox.setValue(“”)
?这将把值设置为noneNo。即使这样也无济于事。它仍然默认为单个选项。我已经尝试过了。我正在尝试访问事件处理程序中绑定到dropdownbox的项。执行fireChange()时,getItems()似乎返回空值。因此,可能在项目完成绑定之前就触发了事件。是否有某种方法可以检查绑定是否完成,然后触发事件?请使用jQuery deferred object。。您可以在绑定后执行任务DropDownBox绑定完成加载我找不到的项目后,应该会发生一个事件。现在,我执行firechange()作为针对此特定条件的下一个用户操作的第一步。这似乎很奇怪,但似乎符合我的目的。