如何从外部控制器函数调用控制器函数,如 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 中的全局函数的主要内容,如果未能解决你的问题,请参考以下文章