我有一个popover组件,我在其中添加了一个多选列表。如果选择了第一个列表项,我想将所有项的checked属性设置为true。但selectionChange事件适用于每个项目的选择事件。因此,for循环的索引值始终从零开始。在这种情况下我该怎么办?谢谢你的建议。
这是我的代码和图片截图; image url
new sap.m.List('statusTypesList', {
mode: 'MultiSelect',
selectedKeys: " ,1,2,3",
includeItemInSelection: true,
selectionChange: function(oEvent) {
var keyValues = "";
var itemArray = oEvent.oSource.getItems();
if(itemArray[0].getSelected()==true){
for (var i = 0; i < itemArray.length; i++) {
oEvent.oSource.setSelectedItem(itemArray[i], true, true);
}
}
}
})
答案 0 :(得分:0)
检查触发事件的项目是否是列表中的第一个项目。像这样:
function(oEvent) {
var changedItem = oEvent.getParameter('listItem');
if(changedItem isTheFirstItem){
//Where 'isTheFirstItem' is the condition you define to identify your first item
var keyValues = "";
var itemArray = oEvent.getSource().getItems();
if(itemArray[0].getSelected()==true){
for (var i = 0; i < itemArray.length; i++) {
oEvent.getSource().setSelectedItem(itemArray[i], true, true);
}
}
}
在if(changedItem isTheFirstItem)
声明
试试这个条件,也许它有效:if(changedItem === oEvent.getSource().getItems()[0])
如果没有,只需建立自己的条件来检查它是否是第一个
注意:用户getSource()
从事件中获取来源。它总是比直接访问对象