0

私は 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

どうすればこの問題を解決できますか?

4

1 に答える 1

0

リスナーを次のように変更します。

afterrender: function(cmp) {
    cmp.mon(cmp.getEl(), 'click', function(event, target) {
        console.log(target);
    }, this, {delegate: '#linkId'});
}
于 2013-04-20T22:27:02.030 に答える