首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sencha中的动态加载和初始化控制器

Sencha中的动态加载和初始化控制器
EN

Stack Overflow用户
提问于 2015-04-29 08:47:41
回答 1查看 590关注 0票数 1

我们使用extjs v4.2和sencha touch v2.3。

我目前正在进行一个涉及动态加载控制器的项目。这在我的extjs中运行得非常好,但我无法在sencha touch中获得相同的功能。

当我想在extjs中加载控制器时,我使用以下语法

代码语言:javascript
复制
    var controllerLookup = 'here.app.controller.' + controllerName;

    AppName.app.getController(controllerLookup);

然后返回到服务器,下载控制器并调用其init方法。

我想要完全相同的功能,在感官触摸。从读取文档的角度看,语法看起来应该类似地工作,但我似乎无法让它工作。当我在控制台中运行代码时,我只得到一个未定义的代码。没有像我在extjs中那样调用服务器来查找文件。有人能看到我哪里出了问题吗,或者是否可以用感官触摸来做。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

控制器文件的完整命名空间。

代码语言:javascript
复制
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); }
        }
    });
};

调用此函数

代码语言:javascript
复制
var controllerLookup = 'here.app.controller.' + controllerName;;
addControllerDynamicallyForMobile(controllerLookup)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29938688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档