如何在extjs mvc中将控制器事件添加到网格中的href

时间:2012-06-11 09:23:44

标签: extjs extjs-mvc extjs4.1

在我的extjs网格'cutterGrid'中,我有一个具有以下输出的渲染器

<a href="#" class="myclass">Product 1</a>

在我的控制器上我有以下

    '#cutterGrid':{
        cellclick :this.onCutterSelectRow
    },

这样可行,但显然可以点击整行。我只想在特定的细胞上使用它。

这是我网格中的字段

 {
                            xtype:'gridcolumn',
                            dataIndex:'CutterNumber',
                            text:'Cutter',
                            renderer: renderCutter,
                            flex:1,
                            sortable: true
                        },

2 个答案:

答案 0 :(得分:2)

cellclick事件将几个参数传递给您的函数 - 其中一个是EventObject

cellclick( Ext.view.Table this, HTMLElement td, Number cellIndex, Ext.data.Model record, HTMLElement tr, Number rowIndex, Ext.EventObject e, Object eOpts )

在你的功能中,你应该能够这样做:

function onCutterSelectRow(table, td, cellIndex, record, tr, rowIndex, e, eOpts)
{
    var target = e.getTarget();
    //test HtmlElement target to be your anchor, by class name and element.
}

答案 1 :(得分:1)

订阅ahref事件的问题是你需要等到呈现HTML元素然后只订阅它。当我在表单上有一个我需要听的链接时,我做了类似的事情:

{
   xtype: 'box',
   autoEl: '<a href='#'>Link</a>',
   listeners: {
      render: function(e) {
         e.getEl().down('a').on('click', function() {
            console.log('GOTCHA!');
         }, e);
      }
   }
}