无法从外部对象访问控制器

时间:2016-10-31 16:37:27

标签: extjs extjs4.1

我这里有一些简单的代码。它会创建一个名为' 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 。从这个方法我想再次访问我的控制器。

我曾尝试过其他人:

  • MyApp.app.getController('&myController的#39)。somefunction();
  • MyApp.controller.MyController.somefunction()

但这些东西似乎都不起作用......我也在使用Extjs 4.1,这可能是一个问题。基本上我想以某种方式从我的代码中访问我的控制器(不一定是从另一个控制器)

这是问题的小提琴:

https://fiddle.sencha.com/#fiddle/1jjh

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:)