amis
amis copied to clipboard
在table或者crud外,获取 crul内勾选的selectedItems数据
实现场景:
点击按钮时,需要获取两个表格中勾选的数据。
存在的问题:
crud中的selectedItems在crud外不知如何获取。 目前测试能在headerToolbar->bulkActions,但是外部组件无法获取。
当前方案:
自定义一个数组,在表格中增加checkbox,选中时修改数组的元素。 但是这样在每次操作后都需要同时维护数组数据的准确性,不太合适。
是否可以在外部获取到crud的selectedItems ,或者有方法遍历crud,获取勾选中的数据。
监听selectedChange
事件,通过${event.data.selectedItems}
获取信息
@lurunze1226 在crud里加了onEvent,确实可以监听了,谢啦!
"onEvent": { "selectedChange": { "actions": [ { "actionType": "custom", "script": (context, actionFun,event) => { let selectedIds = []; event.data.selectedItems.forEach(function (element, index, array) { selectedIds.push(element.id); }); } } ] }
@lurunze1226 还是发现了一个问题,在crud中增加勾选条目的时候,event.data.selectedItems数组的元素是勾选中的数据; 但是在取消勾选的时候,监听到的数组和增加的时候不一样,元素数据得从event.data.selectedItems[i].data字段中获取。 实在是奇怪,这个是打印日志的时候发现的,可否帮忙解答一下原因?感谢!
目前我这么临时做了下兼容,但如果不能搞明白为什么 “取消勾选”和“勾选”时为何element数据不同,还是有隐患的,辛苦开发组的同学帮忙看一下。
if(element.Id != '' && typeof(element.Id) != "undefined") { selectedIds.push(element.Id); } else if( typeof(element.data) != "undefined"){ selectedIds.push(element.data.Id); }
试试${GETRENDERERDATA("componentId", "selectedItems")}