2015-04-29 52 views
1

我们使用ExtJS的4.2版和煎茶触摸V2.3加载和煎茶触摸动态初始化控制器

我目前正在对涉及动态加载器的项目。这在我的extjs中非常适用,但我无法在sencha touch中获得相同的功能。

时,我想加载ExtJS的控制器我用下面的语法

var controllerLookup = 'here.app.controller.' + controllerName; 

    AppName.app.getController(controllerLookup); 

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

我想在sencha touch中有完全相同的功能。从阅读文档的语法看起来应该是类似的,但我似乎无法让它工作。当我在控制台中运行代码时,我只是得到一个未定义的代码。没有像在extjs中寻找文件那样的服务器调用。任何人都可以看到我要去哪里错,或者甚至有可能在sencha touch中做。

感谢

回答

1

随着对煎茶论坛(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)