2012-09-08 51 views
1

我有一个视图和一个控制器。该视图具有按钮下的菜单,点击时项目将由控制器处理。如果我放置类选择器,事件从不被控制器捕获,但是如果我删除类选择器,它将起作用。ExtJS事件控制器选择器

看看我的代码。

查看

Ext.create('Ext.Button', { 
    text: 'Add Tab', 
    cls: 'button', 
    menu: Ext.create('Ext.menu.Menu', { 
     cls: 'addMenu', 
     items: [{ 
      text: 'One' 
     }, { 
      text: 'Two' 
     }] 
    }) 
}); 

和控制器

Ext.define('MyApp.controller.TabController', { 
    extend : 'Ext.app.Controller', 

    init : function() { 
     this.control({ 
      'menu[cls=addMenu]' : { 
       'click' : this.addTab 
      } 
     }); 
    }, 

    addTab : function(a, b, c, d) { 
     console.log(a, b, c, d); 
    } 
}); 

我在做什么错在这里?

+0

你尝试过使用'class'而不是'cls'吗? –

+0

是的,我也测试过这个。不起作用。 – Neutralizer

回答

0

我解决我的问题周围的其他方法。

查看

Ext.create('Ext.Button', { 
    text: 'Add Tab', 
    cls: 'button addTab', 
    menu: Ext.create('Ext.menu.Menu', { 
     cls: 'addMenu', 
     items: [{ 
      text: 'One' 
     }, { 
      text: 'Two' 
     }] 
    }) 
}); 

和控制器

Ext.define('MyApp.controller.TabController', { 
    extend : 'Ext.app.Controller', 

    init : function() { 
     this.control({ 
      'button[cls=button addTab] > menu' : { 
       'click' : this.addTab 
      } 
     }); 
    }, 

    addTab : function(a, b, c, d) { 
     console.log(a, b, c, d); 
    } 
}); 

这个伟大的工程!

0

或许你应该换类名称为引号像

'menu[cls="addMenu"]' 
+0

不起作用。我找到了一个解决方法。 – Neutralizer

0

通常,'='运算符更适合CSS类之外的对象属性,而'〜='运算符最适用于包含空白分隔CSS类列表的属性。