ExtJS 4, как создать и отобразить новый контроллер / представление из другого контроллера / представления? - PullRequest
7 голосов
/ 24 ноября 2011

Я просмотрел множество примеров ExtJS 4 MVC, и все они в значительной степени показывают одно и то же: приложение создает область просмотра, загружает в представление и определяет «контроллеры», которые инициализируют как контроллер:

Ext.application({
    name: 'AM',

    controllers: [
        'Users'
    ],

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: [
                {
                    xtype: 'userlist'
                }
            ]
        });
    }
});

Это здорово, но теперь, скажем, в моем приложении я хочу, чтобы кнопка, содержащаяся в моем представлении, открыла совершенно новый контроллер / представление, как вы это делаете?

Я думаю, чтоЯ ищу способ сказать что-то вроде: - Создать контроллер (запустить его код инициализации) - в коде инициализации контроллера, создать представление и отобразить его

Это правильно, и как вы это делаете?

Я хочу уточнить, что в моем случае мне потребуются ДВА отдельных экземпляра ЖЕ ТОЛЬКО комбинации контроллера / вида.Например, у меня может быть представление с панелью вкладок и двумя вкладками.Затем я хочу поместить ДВА отдельных экземпляра контроллера 'Users' и представления 'user.List' внутри каждой вкладки.

Ответы [ 2 ]

8 голосов
/ 24 ноября 2011

Я думаю, что я ищу способ сказать что-то вроде: - Создать контроллер (запустить его код инициализации) - в коде инициализации контроллера, создать представление и отобразить его

В extjs все контроллеры создаются при загрузке приложения. Вы можете использовать метод запуска в классе Application, чтобы начать просмотр. И пусть контроллер прослушивает события этого взгляда. В контроллере вы всегда можете получить доступ к другому контроллеру, используя объект application:

 this.application.getController('ControllerName1').displayListPanel(options);

В приведенном выше коде я вызываю метод displayListPanel, который доступен в контроллере ControllerName1. Этот метод содержит код для отображения вида (панели сетки) на экране. Точно так же у меня могут быть методы, которые создают представления как новая форма для ввода данных. Вот еще один пример:

this.application.getController('ControllerName1').newDateForm();

и по моему методу:

newDataForm : function() {

        var view = Ext.widget('form',{title: 'New Data'});
        view.show();
    },
2 голосов
/ 24 ноября 2011

Только что проверил документацию нового контроллера и просмотр классов.

Мне кажется, что вы всегда можете найти нужный вид, когда вам это нужно.Например, вы можете:

//somewhere in controller
this.getView('Viewport').create(); // or .show()

проверить это и просмотреть методы класса:

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.app.Controller-method-getView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...