如何在extjs4中处理控制器中的dom事件?

时间:2013-04-20 10:49:23

标签: hyperlink extjs4 extjs4.1 extjs-mvc

我正在使用Extjs4,并且如何捕获超链接上的事件。我努力了,但无法解决它。

这是我的代码:

查看代码

Ext.define('AM.view.user.linkView', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.Link',
    title: 'My Cool Panel',
    html: '<div><a href="#" id="linkId">This link will open a window</a></div><br /> <label for="myInput">Type here: </label><input name="myInput" type="text" value="" />',
});

控制器代码

Ext.define('AM.controller.Users', {
    extend: 'Ext.app.Controller',

    stores: ['Users'],

    models: ['User','Book'],

    views: ['user.Edit', 'user.List','user.Create','user.linkView'],
    init: function() {
        this.control({
             'Link': {
                     afterrender: function(cmp)
                     {
                         Ext.get('#linkId').on('click', function(event, target) {
                            console.log(target);
                        }, this);
                     }
                 }
             });
        }
    });

当我运行上面的代码时,我收到此错误:

Uncaught TypeError: Cannot call method 'on' of null

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

将监听器更改为:

afterrender: function(cmp) {
    cmp.mon(cmp.getEl(), 'click', function(event, target) {
        console.log(target);
    }, this, {delegate: '#linkId'});
}