如何在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