【发布时间】:2019-12-22 19:45:29
【问题描述】:
我正在使用 Kendo Treeview 控件,并且需要能够在用户选中或取消选中某个项目时处理对我的后端的更新。它发出一个checkedChange,它为我提供了一个包含已检查项目和所有子项的对象,但它没有告诉我该项目是否已检查。有一个 selectedKeys 集合存储所有选定的键,但似乎在触发 checkChange 事件后更新,这意味着我不会得到正确的答案,因为新检查的项目不在集合中。有没有办法让查找等到集合更新? 还有一种方法可以在更新后获取集合的更改,也许我可以使用 taht 来确定添加和删除了哪些键?
这里是 StackBlitz 示例,它使用了组件 StackBlitz Sample
【问题讨论】:
-
请在此处添加一个最小的代码示例,以便我们看到您在做什么。
-
它在堆栈闪电战中准确显示正在发生的事情,没有办法提供有意义的短片
-
引用:“......它没有告诉我该项目是否被检查......”。是的,它确实。在您自己的示例中,
console.log(this.checkedKeys.indexOf($event.item.dataItem.guid));这一行在控制台中打印 -1 如果项目的新状态被选中,前一个索引如果未选中并从列表中删除。 -
有问题,因为在checkedKeys更新之前点击触发,结果是相反的。当它被选中时,它表示索引为 -1,这意味着它不在数组中,然后当你取消选中它时,它会显示索引,因为它在被删除之前当前在数组中。
-
您还能要求什么?您知道哪些键被选中或未选中,并且只将这些键发送到您的后端进行更新。另一方面,您为什么要关心在checkedChange 之前触发onClick?您的示例中没有使用 onClick,也不需要它。