如何从外部控制器函数调用控制器函数,如 sencha touch 中的全局函数

Posted

技术标签:

【中文标题】如何从外部控制器函数调用控制器函数,如 sencha touch 中的全局函数【英文标题】:how to call controller function from outside controller function like global function in sencha touch 【发布时间】:2013-07-26 09:20:09 【问题描述】:

如何从外部控制器函数调用控制器内部的函数,例如电话间隙回调函数

这是控制器外部定义的函数

  function onDeviceReady() 
    //do ALL your localstorage stuff here
    console.log('In onDeviceReady() function');
    somefunction();// this is not working
  

这里是控制器类

     Ext.define('FCELB.controller.LoginController', 
        extend: 'Ext.app.Controller',
        config: 
            refs: 
                username: '#username',
                password: '#password'
            ,

            

        ,      

        init: function () 
            console.log('Login controller');
            document.addEventListener("deviceready", onDeviceReady, false);
            //onDeviceReady();
        ,

        somefunction:function()
            //some functionality
        

   );

如何从上面的onDeviceready()函数调用somefunction()

【问题讨论】:

【参考方案1】:
FCELB.app.getController('LoginController').somefunction();  

在哪里

FCELB - 应用程序名称

LoginController - 控制器的名称

somefunction - 函数名

【讨论】:

此解决方案有效,但每次运行时都会从被调用的类中调用 init 函数。【参考方案2】:

如果您的控制器类共享某些行为,您可能还想查看ExtJS mixins

【讨论】:

【参考方案3】:

试试这个:

document.addEventListener("deviceready", this.somefunction, false);

var self = this;
document.addEventListener("deviceready", function(e)  self.somefunction(e); , false);

【讨论】:

以上是关于如何从外部控制器函数调用控制器函数,如 sencha touch 中的全局函数的主要内容,如果未能解决你的问题,请参考以下文章

尝试从外部模态视图控制器调用视图控制器函数时出现致命错误

C - 从外部进程调用函数而不导出函数

Sench Touch MVC

如何从 laravel 控制器执行外部 shell 命令?

PyDev:如何从控制台调用调试特定命令(带断点)?

使用 laravel 4.2 调用控制器外部的 php 函数