我这里有一些简单的代码。它会创建一个名为' MyApp'的应用程序。并定义一个名为' MyController'的控制器。然后将MyController作为配置传入应用程序。
function onDeviceReady() {
alert('In onDeviceReady() function');
MyApp.app.getController('MyController').somefunction();
// MyApp.controller.MyController.somefunction()
}
Ext.application({
name: 'MyApp',
controllers: ['MyController']
});
Ext.define( 'MyApp.controller.MyController', {
extend: 'Ext.app.Controller',
init: function () {
alert('Login controller');
onDeviceReady();
},
somefunction:function(){
alert ( 'some function callled' )
}
});
到目前为止一切顺利。典型的标准东西。现在,在' init'从MyController调用我调用一些外部方法 onDevideReady 。从这个方法我想再次访问我的控制器。
我曾尝试过其他人:
但这些东西似乎都不起作用......我也在使用Extjs 4.1,这可能是一个问题。基本上我想以某种方式从我的代码中访问我的控制器(不一定是从另一个控制器)
这是问题的小提琴:
答案 0 :(得分:2)
对我来说没问题(一旦我移动你的控制器/应用程序)。
function onDeviceReady() {
MyApp.app.getController('MyController').somefunction();
}
Ext.define('MyApp.controller.MyController', {
extend: 'Ext.app.Controller',
init: function() {
onDeviceReady();
},
somefunction: function() {
alert('some function callled')
}
});
Ext.application({
name: 'MyApp',
controllers: ['MyController']
});
https://fiddle.sencha.com/#fiddle/1jk7
然而,不是我做事的方式。我宁愿没有全局功能,并且深入了解我的应用程序。我宁愿有一个单例类,我会触发事件,所以控制器会听那些事件。另外,下车4.1:)