2015-04-29 3 views
1

Мы используем ExtJS v4.2 и Сенча сенсорный v2.3нагрузки и инициализирует контроллер динамически в Сенча Touch,

В настоящее время я работаю над проектом, который включает в себя загрузку контроллера динамически. Это отлично работает в extjs для меня, но я не могу получить такую ​​же функциональность в sencha touch.

Когда я хочу, чтобы загрузить контроллер в ExtJS Я использую следующий синтаксис

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

    AppName.app.getController(controllerLookup); 

Это затем возвращается на сервер, загружает контроллер и вызывает метод инициализации.

Я хотел бы точно такую ​​же функциональность в сенчане. От чтения документов синтаксис выглядит так, как будто он должен работать аналогичным образом, но я не могу заставить его работать. когда я запускаю код в консоли, я просто получаю неопределенный. Нет вызова сервера, как я делаю в extjs, ища файл. Может ли кто-нибудь увидеть, где я ошибаюсь, или если это возможно даже при сенчане.

Благодаря

ответ

1

С помощью поста на Сенче форумах (https://www.sencha.com/forum/showthread.php?198019-How-to-load-controllers-dynamically) Я был в состоянии заставить его работать. Теперь контроллер загружает в динамически и вызывает метод инициализации

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)