как добавить событие контроллера в href в сетке в extjs mvc

В моей сетке 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
                        },

person frosty    schedule 11.06.2012    source источник
comment
Какую версию ExtJs вы используете? Если 4 - добавить тег extjs4, 3 - extjs3 и т.д.   -  person sha    schedule 11.06.2012


Ответы (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.
}
person s_hewitt    schedule 11.06.2012

Проблема с подпиской на события ahref заключается в том, что вам нужно дождаться рендеринга HTML-элемента и только потом подписываться на него. Когда у меня в форме была ссылка, которую мне нужно прослушать, я сделал что-то вроде этого:

{
   xtype: 'box',
   autoEl: '<a href='#'>Link</a>',
   listeners: {
      render: function(e) {
         e.getEl().down('a').on('click', function() {
            console.log('GOTCHA!');
         }, e);
      }
   }
} 
person sha    schedule 11.06.2012
comment
я вижу вашу точку зрения. в идеале я бы подписался на ячейку и использовал cellclick, но я не уверен, как отфильтровать всю строку в моем контроллере. Что касается вашего примера выше, как я могу сделать это в рамках парадигмы mvc - person frosty; 11.06.2012
comment
Ну... этот код, вероятно, был бы в вашем представлении, верно? Вы можете заменить console.log на fireEvent(), а затем подписаться на это событие в контроллере. - person sha; 11.06.2012