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

Posted

技术标签:

【中文标题】如何在extjs mvc的网格中将控制器事件添加到href【英文标题】:how to add a controller event to href in grid in extjs mvc 【发布时间】:2012-06-11 09:23:43 【问题描述】:

在我的 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
                        ,

【问题讨论】:

您使用的是什么版本的 ExtJs?如果是 4 - 添加标签 extjs4、3 - extjs3 等。 【参考方案1】:

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.

【讨论】:

【参考方案2】:

订阅ahref 事件的问题是您需要等到呈现 HTML 元素后才订阅它。当我的表单上有一个我需要收听的链接时,我做了这样的事情:


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

【讨论】:

我明白你的意思。理想情况下,我会订阅单元格并使用“cellclick”,但我不确定如何过滤掉控制器中的整行。关于你上面的例子,我怎么能在 mvc 范式中做到这一点 嗯...这个代码可能在您看来,对吧?您可以将console.log 替换为fireEvent(),然后在控制器中订阅此事件。

以上是关于如何在extjs mvc的网格中将控制器事件添加到href的主要内容,如果未能解决你的问题,请参考以下文章

Extjs Grid - 如何在 CheckboxModel 列中将类名添加到 tr

在 EXTJS 中为同一个选择器使用不同的事件

如何在 extjs3 网格中捕获最后一行编辑事件

将工具提示添加到 extjs 网格以显示有关该行的完整信息

如何在具有嵌套数据的网格中设置组合框值? Extjs 4.2 Mvc

ExtJS/Javascript:将子模型添加到父模型,在网格上呈现