Extjs 6 Modern - 如何从视图中执行控制器中的功能?

时间:2016-09-14 14:44:21

标签: extjs view controller

在控制器中

listen: {
   global: {
     'ontest': 'ontestfunction'
   }
},

ontestfunction: function(){
    alert('oks 31');
}

在视图中

listeners: {
                element: 'element',
                click: function(){
                    Ext.GlobalEvents.fireEvent('ontest');
                }
     }

这是我找到工作的唯一方式,你知道其他方式吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Ext.app.Controller.getController获取任何控制器。

由于application是从控制器派生的,所以您只需知道应用程序的名称和所需的控制器;并且调用该函数是小菜一碟:

var configController = MyAppName.app.getController("MyAppName.controller.Configuration");
configController.ontestfunction();

答案 1 :(得分:1)

由于您使用的是EXT 6,我假设您使用的是视图控制器,而不是控制器。

Ext将自动解析作为视图控制器的范围,无需编写任何额外的代码。

首先确保将viewcontroller定义为视图的控制器:

controller: 'aliasofviewcontroller'

之后,您基本上可以将任何控制器功能分配给视图中组件的处理程序。

假设你的控制器中有以下功能:

onClickCustomHandler:function(e){
...
}

使用以下语法,每次点击“a”按钮时都会调用该函数:

Ext.create('Ext.Button', {
    text: 'My button',
    handler: 'onClickCustomHandler'
});

或使用xtype:

{
   xtype:'button',
   text:'My button',
   handler: 'onClickCustomHandler'
}

进一步阅读:http://docs.sencha.com/extjs/6.0.2/guides/application_architecture/view_controllers.html