在 Sencha Touch 中动态加载和初始化控制器
Load and initialise controller dynamically in Sencha Touch
我们使用 extjs v4.2 和 sencha touch v2.3
我目前正在从事一个涉及动态加载控制器的项目。这对我来说在 extjs 中非常有效,但我无法在 sencha touch 中获得相同的功能。
当我想在 extjs 中加载控制器时,我使用以下语法
var controllerLookup = 'here.app.controller.' + controllerName;
AppName.app.getController(controllerLookup);
然后返回到服务器,下载控制器并调用它的 init 方法。
我想要 sencha touch 中完全相同的功能。通过阅读文档,语法看起来应该类似地工作,但我似乎无法让它工作。当我 运行 控制台中的代码时,我只是得到一个未定义的。没有像我在 extjs 中查找文件那样调用服务器。谁能看出我哪里出错了,或者是否可以在 sencha touch 中做到这一点。
谢谢
在 sencha 论坛 (https://www.sencha.com/forum/showthread.php?198019-How-to-load-controllers-dynamically) 上 post 的帮助下,我能够让它工作。控制器现在动态加载并调用 init 方法
AppName
您在 Ext.Application 中定义应用程序时使用的名称 app.js 或同等名称。
类路径
控制器文件的完整命名空间
function addControllerDynamicallyForMobile(classPath, config) {
var app = AppName.app.application,
config = config || {};
Ext.Loader.setConfig({ enabled: true });
Ext.require(classPath, function() {
var controllers = app.getControllerInstances();
if (!controllers[classPath]) {
var controller = Ext.create(classPath, Ext.apply({
application : app
}, config.options || {}));
controllers[classPath] = controller;
app.controllers.push(classPath);
controller.init();
if (config.callback) { config.callback.call((config.scope || this), config); }
}
});
};
调用这个函数
var controllerLookup = 'here.app.controller.' + controllerName;;
addControllerDynamicallyForMobile(controllerLookup)
我们使用 extjs v4.2 和 sencha touch v2.3
我目前正在从事一个涉及动态加载控制器的项目。这对我来说在 extjs 中非常有效,但我无法在 sencha touch 中获得相同的功能。
当我想在 extjs 中加载控制器时,我使用以下语法
var controllerLookup = 'here.app.controller.' + controllerName;
AppName.app.getController(controllerLookup);
然后返回到服务器,下载控制器并调用它的 init 方法。
我想要 sencha touch 中完全相同的功能。通过阅读文档,语法看起来应该类似地工作,但我似乎无法让它工作。当我 运行 控制台中的代码时,我只是得到一个未定义的。没有像我在 extjs 中查找文件那样调用服务器。谁能看出我哪里出错了,或者是否可以在 sencha touch 中做到这一点。
谢谢
在 sencha 论坛 (https://www.sencha.com/forum/showthread.php?198019-How-to-load-controllers-dynamically) 上 post 的帮助下,我能够让它工作。控制器现在动态加载并调用 init 方法
AppName
您在 Ext.Application 中定义应用程序时使用的名称 app.js 或同等名称。
类路径
控制器文件的完整命名空间
function addControllerDynamicallyForMobile(classPath, config) {
var app = AppName.app.application,
config = config || {};
Ext.Loader.setConfig({ enabled: true });
Ext.require(classPath, function() {
var controllers = app.getControllerInstances();
if (!controllers[classPath]) {
var controller = Ext.create(classPath, Ext.apply({
application : app
}, config.options || {}));
controllers[classPath] = controller;
app.controllers.push(classPath);
controller.init();
if (config.callback) { config.callback.call((config.scope || this), config); }
}
});
};
调用这个函数
var controllerLookup = 'here.app.controller.' + controllerName;;
addControllerDynamicallyForMobile(controllerLookup)