我们使用extjs v4.2和sencha touch v2.3。
我目前正在进行一个涉及动态加载控制器的项目。这在我的extjs中运行得非常好,但我无法在sencha touch中获得相同的功能。
当我想在extjs中加载控制器时,我使用以下语法
var controllerLookup = 'here.app.controller.' + controllerName;
AppName.app.getController(controllerLookup);然后返回到服务器,下载控制器并调用其init方法。
我想要完全相同的功能,在感官触摸。从读取文档的角度看,语法看起来应该类似地工作,但我似乎无法让它工作。当我在控制台中运行代码时,我只得到一个未定义的代码。没有像我在extjs中那样调用服务器来查找文件。有人能看到我哪里出了问题吗,或者是否可以用感官触摸来做。
谢谢
发布于 2015-04-29 11:54:04
在sencha论坛(https://www.sencha.com/forum/showthread.php?198019-How-to-load-controllers-dynamically)上的一篇文章的帮助下,我能够让它开始工作。控制器现在动态加载并调用init方法。
AppName
在Ext.Application中定义应用程序时在app.js或等效项中使用的名称。
Classpath
控制器文件的完整命名空间。
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)https://stackoverflow.com/questions/29938688
复制相似问题