2014-11-01 96 views
1

我有一个组合框。这听取'选择'事件。 我在select事件回调中触发了一个自定义事件。 当事件发生变化时,此事件将被解雇两次。Extjs自定义事件触发两次。在select事件回调中触发的事件

我有一个类似的组合框连接到相同的控制器,但只有一个事件被触发。

我正在使用ExtJs 5.

这是我的代码。

{ 
     xtype: 'combobox', 
     width: 150, 
     textAlign: 'left', 
     store: { 
      fields: ['text', 'value'], 
      data: [ 
       {"text": "a", "value": "a"}, 
       {"text": "b", "value": "b"}, 
       ] 
     }, 
     allowBlank: false, 
     editable: false, 
     displayField: 'text', 
     valueField: 'value', 
     listeners: { 
      select: function (combo, records) { 
       console.log('comboooo ---------------- ', records[0].data.value); 
       this.fireEvent('custom-event', 'key', records[0].data.value); 
      }, 
      afterrender: function (cmp) { 
       cmp.setSelection(1); 
      } 
     } 
    } 

编辑: 下面是它在我的应用程序去。

我有一个MainViewcontroller,MainView和SubView。 SubView是MainView中的一个组件。

我有两个组件在SubView和MainView中。 我添加了MainView后添加了子视图。

我从MainView组件的'change'事件触发自定义事件。 MainController能够识别这个。如预期的那样,该事件仅发生一次。

现在,当我火从子视图的一个组成部分的“变”事件相同的自定义事件这一事件被炒鱿鱼两次

+0

如果您使用的是分机5,为什么用4.1和4.2标记您的问题?从谷歌响应 – 2014-11-01 11:29:13

+0

我观察到有没有很多ExtJS 5的结果。 所以我认为标记4.1和4.2以及5会给我更快的反应 – phani 2014-11-01 11:30:45

+1

[我创建了一个小提琴](https://fiddle.sencha.com/#fiddle/cm9)并且无法复制这个问题。自定义事件仅触发一次。你能提供更多的上下文/代码还是更好,创建一个演示问题的小提琴? – weeksdev 2014-11-01 13:27:21

回答

2

我想通了......

子视图和的MainView都有他们的控制器配置参考主控制器。

由于subView已经是MainView的一部分,所以我不需要在这里再次注册控制器。

我删除了子视图中的控制器配置,现在它按预期工作。

感谢您的时间@weeksdev :)