我想在单击网格中的单元格时从视图中调用控制器中的方法。
{ header: "<img src='/Content/images/icons/page_white_acrobat.png'/>", width: 30, dataIndex: 'documents', sortable: true, renderer: this.hasDocument,
listeners: {
click: function () {
//how to call method in controller?
}
}
},
有人知道,请指教。
谢谢!
答案 0 :(得分:2)
Sencha在项目的官方论坛上会有很多tutorials for extjs 4。
当我提供一些有用的链接到良好的开始教程... 关于网格管理的特定one's ... 我认为人们可以在投票之前真正看到它。看看它,看看自己一些更好的方法来做问题提问者想要做的事情。
提供直接答案并不总是最好的学习方式。
无论如何......以下将会解决问题:
var controller = this.getController(Ext.String.capitalize(config.controller));
/* where config was an argument of your callback method) */
我建议你尽可能地从控制器和模型视图中分离。如果你看一下我所链接的项目,你会发现Viewport.js是一个很好的方法。它在这些简短脚本的末尾用.callParent(arguments)
方法调用来调用控制器。
答案 1 :(得分:1)
我确信原来的人已经找到答案或做了一些事情来做这个伎俩。
但对于可能有同样问题的人来说,这是一个快速举例说明:
不要将监听器放入(MVC)-VIEW您的应用程序中。为元素提供ID(在本例中为网格)
在(MVC) - CONTROLLER中添加此功能:
init : function(app) {
this.control({
'myWindow': {
afterrender : this.doAfterRender
/*SAMPLE*/
},
'myWindow #someGrid_ID' : {
select: this.doSelect
/* THIS FUNCTION IS LOCATED in the Controller*/
}
});
},
doSelect : function() {
/*....*/
}
现在控制器将监听事件并对其做出反应。
我希望这可以帮助一些可能会对此感到困惑的人。
看看:
Dom查询 - 解释:
(网格是“myWindow”的子元素)
希望这会有所帮助