如何在extjs中调用控制器函数

时间:2013-04-30 06:46:12

标签: extjs extjs4.1 sencha-touch-2.1

我在控制器中有一个功能。它将返回一个值。我使用renderer:this.getController('test.controller.Barchart').change();在视图中调用了该函数,但它无效。我收到错误风没有方法getController()。谁能告诉我怎么称呼它?

3 个答案:

答案 0 :(得分:6)

视图调用控制器被认为是邪恶的本质。视图永远不应该知道控制器。我是使用ExtJS的大型项目的领导者,除了视图的JSON描述之外,我们不允许在视图中使用任何内容。寻找控制器的逻辑可能应该在控制器本身。

答案 1 :(得分:5)

请参考以下解决方案!!!

var ControllerRef=<applicationreference>.getController(<ControllerfolderPath>.controllerName);
ControllerRef.<ControllerFunction>();

示例:

var MyApp = Ext.create('Ext.app.Application', { 
               ......
               ......
            });

var ControllerRef  =   MyApp.getController('general.ManagerController');
ControllerRef.MyFunction();

由于

答案 2 :(得分:0)

试试这个: 您可以将控制器作为全局变量放在app.js中,如下所示:

Ext.define('MySharedData', {
    my_Controller:Object

});

在您的控制器中:

MySharedData.my_Controller=this.getController('<ControllerfolderPath>.controllerName');

然后从您的视图中调用您想要的功能:

 MySharedData.my_Controller.my_Function();