ExtJs没有在ComboBox上触发select事件

Afs*_*ani 19 combobox extjs extjs4

我有一个ExtJs的问题combobox,考虑我有一个combobox有4个项目和select事件中的回调函数combobox.

当我要设置combobox所选值时setValue(),ExtJs不会触发select事件.

我该如何解决这个问题?

我应该自己解雇这个事件setValue()吗?

sra*_*sra 19

我可以告诉你一年前sencha支持的内容:

好吧,根据定义,事件是由用户操作触发的函数调用,并且当您调用select时没有用户操作.

无论如何,"修复"很容易:你知道你在调用select之后调用select,你可以调用select listener函数.

这取决于你的情况你应该做什么.对我来说,我挂了我的实现,以便我能够调用负责任的方法,但另一方面,当你自己解雇事件时,我没有看到任何缺点.所以我觉得你更喜欢哪种方法取决于你.

这是一个如何自己解雇事件的例子(部分来自@JohanHaest的评论)

为简单起见,我说你只启用了单一选择

var record = combo.store.getById(id);
combo.select(id);
combo.fireEvent('select', combo, record);
Run Code Online (Sandbox Code Playgroud)

要么

combo.select(model);
combo.fireEvent('select', combo, model);
Run Code Online (Sandbox Code Playgroud)

有一个可能的哈克在当前版本(4.1.3)设置在一个第二个参数时select 的方法true.根据源代码,这将触发select事件.但First参数必须是Model实例.

// source-snipped
select: function(r, /* private */ assert)
Run Code Online (Sandbox Code Playgroud)

所以打电话

combo.select(model, true);
Run Code Online (Sandbox Code Playgroud)

将触发select事件,但此行为可能随时(版本)更改,因为断言标记为私有

  • 以下代码触发事件:`combo.fireEvent('select',combo,records);` (3认同)
  • @AvinashT.不,那是错的.当选择器关闭时,事件不会被触发.正如我在编辑中所述,您必须使用hack来存档 (2认同)