我在网格中有一个动作列,点击它后需要执行很多非平凡的操作。我不想只使用处理程序方法来避免我的代码中出现重复。我想处理可以从多方调用的控制器方法的click事件。如何从网格动作栏调用控制器的动作
这里是我的行动列的定义:
{
header: translator.translate('actions'),
xtype: 'actioncolumn',
width: 50,
items:[{
id : 'detailContactPerson',
icon : '/resources/images/pencil.png',
tooltip: translator.translate('show_detail')
}]
},
但现在我不知道怎么写组件查询定义设置监听器。
init: function() {
this.control({
'detailContactPerson': {
click: function(obj) {
var contactPerson = obj.up('container').contactPerson;
this.detail(contactPerson);
}
},
我试过的第二种方法是直接从处理程序方法调用控制器的方法。它看起来像这样:
{
header: translator.translate('actions'),
xtype: 'actioncolumn',
width: 50,
items:[{
id : 'detailContactPerson',
icon : '/resources/images/pencil.png',
handler: function(contactPerson){
Project.controller.contactPerson.detail(contactPerson);
},
tooltip: translator.translate('show_detail')
}
但不幸的是它不支持调用控制器方法(没有方法异常引发)的方式。
可能somone帮助我构建工作组件查询,或显示一些exapmle如何从外部调用控制器方法?
Atian嗨。感谢您的回复。第一句话(和它的很多变化)我已经尝试过。我认为问题在于操作列的项目不是组件。它们被定义为简单的数组。这使得它无法使用ComponentQuery来获取它。但我不确定,我一到办公室就会问Sencha的开发人员。 “点击事件”的方式看起来很完美。我会试试看。再次非常感谢。我很感激。 – elCarda
是的,它不是一个组件。 this.control无法访问它。我不喜欢ActionColumn,而更喜欢使用插件 – atian25
它完美的工作,谢谢。 – elCarda