Ler*_*ica 8 extjs extjs4 extjs-mvc
我有一个功能,在我的一个控制器中描述.该函数负责创建一个表单,我需要在不同的情况下使用不同的视图.是否可能以及从我需要的视图中调用此函数的方法是什么,而无需在每个控制器中添加相同的代码.
这是控制器的代码,我尝试使用其他控制器的方法:
Ext.define('MY.controller.EventsController', {
extend: 'Ext.app.Controller',
models: [
'EventsRecord'],
stores: [
'Events'],
views: [
'EventsGrid'],
refs: [{
ref: 'EventsGrid',
selector: 'CalendarEvent'
}],
init: function () {
this.control({
'CalendarEvent': {
afterEditFinish: this.askForNotify,
deleteEvent: this.deleteEvent,
calendarEditFunc: this.calendarEditFunc,
addCalendarEvent: this.addCalendarEvent,
itemclick: this.onSelectEnableBtn
}
})
},
Run Code Online (Sandbox Code Playgroud)
在这里,我尝试使用类似和var contr = Ext.getController('SomeController');......的东西......
askForNotify: function(editor, e) {...
Run Code Online (Sandbox Code Playgroud)
sha*_*sha 20
使其成为全局类的一部分,singleton: true并从代码中的任何位置访问它.只是从视图中调用控制器方法是一种反对MVC范式的...
更新:如果您确实无法更改现有代码 - 请执行以下操作.
在某处保存对您的应用程序的引用(推测您的应用程序定义类似于:
Ext.application({
launch: function() {
_myAppGlobal = this;
}
});
Run Code Online (Sandbox Code Playgroud)
使用此变量获取所需的控制器:
_myAppGlobal.getController('MyController');
Run Code Online (Sandbox Code Playgroud)