0

单击网格中的单元格时,我想从视图中调用控制器中的方法。

{ 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?
        }
    }
},

有谁知道,请指教。

谢谢!

4

2 回答 2

2

在 Sencha 的项目官方论坛上,您将有很多关于 extjs 4 的教程。

当我提供一些有用的链接到良好的入门教程时......带有特定关于网格管理的链接......我认为人们可以在投票之前真正查看它。看看它,看看自己有一些更好的方法来做提问者想做的事情。

提供直接答案并不总是最好的学习方式。

无论如何......以下将解决问题:

var controller = this.getController(Ext.String.capitalize(config.controller));
/* where config was an argument of your callback method) */

我建议您尽可能将 View 与 Controller 以及 View 与 Model 解耦。如果您查看我链接的项目,您会发现在Viewport.js中是一个很好的方法。它.callParent(arguments)在这些简短脚本的末尾使用方法调用调用控制器。

于 2012-09-02T06:58:42.890 回答
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 #someGrid_ID” - dom 查询注意 # 它指的是元素的 ID。
  • “myWindow” - 指的是我的窗口的别名。
  • “someGrid_ID” - 指的是我的网格 ID。

(网格是“myWindow”的子元素)

希望这可以帮助

于 2013-07-08T16:41:01.337 回答