如何检查事件是否以编程方式触发?
即我有一个Ext.tree.Panel
并监听selectionchange
事件。如果事件是由用户手动触发(行单击)或通过select()
方法,我如何在处理程序中检查?
答案 0 :(得分:1)
选项1: 对于大多数事件,eOpts参数将传递给事件。取决于事件,这由ExtJs填充。如果事件是手动触发的,那么eOpts永远不会被定制填充或填充。
选项2: 如果在代码中发生手动事件触发,则可以操作添加自定义参数
据我所知和我的研究,没有基于selectionchange事件范围的解决方案。但是从设计的角度来看,这是应该如何,因为selectionchange事件不应该依赖于调用者。从说到我可以说需要2个不同的事件。采取不同行动的地方。 (这是事件的定义:))
因此,我的建议是覆盖select方法并触发一个自定义事件,在该事件中,您可以执行不同的操作。如果在rowclick事件中需要,可以触发另一个自定义事件。
您可以在子类中覆盖它,也可以将Ext.override用于全局范围。
答案 1 :(得分:1)
你不能,真的。 “最佳”方式是监听itemclick
事件,并检查selectionchange
事件是否在一些较小的阈值范围内被触发。