Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Вызов ф-ций контроллера из другого файла приложения (https://javascript.ru/forum/extjs/65010-vyzov-f-cijj-kontrollera-iz-drugogo-fajjla-prilozheniya.html)

Sogl 20.09.2016 09:51

Вызов ф-ций контроллера из другого файла приложения
 
Привет всем!

Есть у меня глобальный файлик со всеми маршрутами, подключен прямо в Application.js:
controllers:[
        'Routes'
    ],


Я хочу поменять вьюху в своем приложении по изменению маршрута, это делает функция `setCurrentView` в файле MainController.

Вопрос в том, как обратиться из роутера к ф-ции, которая в MainController (лежит в app\view\main\MainController.js)?

Нагуглил, что можно сделать так:
this.getApplication().getController('ControllerName').doSomething();


На getController вываливается ошибка, даже если я полное наименование пишу:
TypeError: controller.doInit is not a function


в requires при этом все прописано.

Прямой вызов через `console.log(MyApp.view.main.MainController);` выдает в консоли `constructor()` и все...

Как сделать правильно?

Sogl 30.09.2016 03:24

В общем, помогли мне таки на форуме Сенчи. Причем, именно тот человек, который писал туториал, по которому я и делал свое приложение. ;)
Тема тут:
https://www.sencha.com/forum/showthr...ter-controller

В итоге я все делаю через fireEvent'ы, а в ViewController'ах слушаю события единственного контроллера с маршрутами.

В целом, оно то удобно, только проблема с переключением активного View никуда не пропала. Например, если мы логинимся, что через widget создается View главное, ходим по роутам и меняются вьюшки... но стоит обновить страницу на каком-то роуте, получаем пустой экран... View не загружено, а роут сработал. Также при рефреше обнуляется singleton с данными авторизации, требуется весь процесс повторить заново.

Есть какой человеческий пример с правильно построенными роутингом и авторизацией? :help:

kolka 30.09.2016 10:32

Sample Login App - из примера поймете как хранить..
А здесь как с роутами сохранять состояние...


Часовой пояс GMT +3, время: 10:12.