Создание контроллера

Содержание

Слайд 2

В предыдущей серии

Создали представление грида
Создали представление окна редактирования

В предыдущей серии Создали представление грида Создали представление окна редактирования

Слайд 3

План

Создание сторов
Создание моделей
Создание контроллеров
Создание маршрута контроллера
Создание прав для просмотра реестра
Создание элемента главного

План Создание сторов Создание моделей Создание контроллеров Создание маршрута контроллера Создание прав
меню для перехода в реестр

Слайд 4

Создание стора

Создать скрипт в поддиректории store, название класса создаваемого стора обязательно должно

Создание стора Создать скрипт в поддиректории store, название класса создаваемого стора обязательно
совпадать с физическим расположением скрипта

Слайд 5

Создание стора

Выбор базового класса делаем на основании предназначения стора – B4.base.Store/Ext.data.TreeStore
Указать

Создание стора Выбор базового класса делаем на основании предназначения стора – B4.base.Store/Ext.data.TreeStore
выбранный базовый класс в свойстве extend
Указать в requires зависимость от модели, с которой будет связан создаваемый стор
Если не требуется автоматическая загрузка стора, можно указать autoLoad: false
В свойстве model указываем модель

Слайд 6

Создание модели

Создать скрипт в поддиректории model, название класса создаваемой модели обязательно должно

Создание модели Создать скрипт в поддиректории model, название класса создаваемой модели обязательно
совпадать с физическим расположением скрипта

Слайд 7

Создание модели

Указываем родительский класс ‘B4.base.Model’ в свойстве extend
Описываем прокси – слой, который

Создание модели Указываем родительский класс ‘B4.base.Model’ в свойстве extend Описываем прокси –
будет перенаправлять CRUD запросы, посылаемые нашей модели
Т.к. реализация CRUD операций для нашего реестра будет находиться на сервере, выбираем тип прокси ‘b4proxy’ и указываем в свойстве controllerName имя MVC контроллера, ответственного за взаимодействие с данными нашего реестра
Описываем поля нашей модели в массиве fields

Слайд 8

Создание модели Настройка прокси

Метод действия
Create
Read
Update
Delete
List

Имя свойства proxy
createAction
readAction
updateAction
destroyAction
listAction

Значение по-умолчанию
create
get
update
delete
list

Создание модели Настройка прокси Метод действия Create Read Update Delete List Имя

Слайд 9

Создание модели Настройка полей

Модель

Грид

Окно редактирования

Создание модели Настройка полей Модель Грид Окно редактирования

Слайд 10

Создание контроллера

Создать скрипт в поддиректории controller, название класса создаваемого контроллера обязательно должно

Создание контроллера Создать скрипт в поддиректории controller, название класса создаваемого контроллера обязательно
совпадать с физическим расположением скрипта

Слайд 11

Создание контроллера

Наследуемся от B4.base.Controller
Указываем зависимости в requires
Перечисляем используемые представления в массиве views
Расширяем

Создание контроллера Наследуемся от B4.base.Controller Указываем зависимости в requires Перечисляем используемые представления
функциональность контроллера миксинами в объекте mixins
Перечисляем ссылки на компоненты в массиве refs для унифицированного доступа к ним, в свойстве ref указывается имя ссылки, а в свойстве selector – селектор компонена, в последствии к компоненту можно будет обращаться controller.get[Имя ссылки]()

Слайд 12

Создание контроллера Аспект

Универсальная настраиваемая функциональность
Перечисляем используемые аспекты в массиве aspects
У каждого аспекта набор

Создание контроллера Аспект Универсальная настраиваемая функциональность Перечисляем используемые аспекты в массиве aspects
настраиваемых свойств уникален, общие у них свойства xtype – алиас аспекта и name – имя, по которому к аспекту можно будет обратиться из контроллера

Слайд 13

Создание контроллера GridEditWindowAspect

Загрузка и обновление списка в гриде
Удаление записей из грида
Открытие записи на

Создание контроллера GridEditWindowAspect Загрузка и обновление списка в гриде Удаление записей из
редактирование
Сохранение редактируемой записи
Создание новой записи

Слайд 14

Создание контроллера GridEditWindowAspect

Указываем xtype ‘grideditwindowaspect’
Указываем в свойстве name уникальное в текущем контроллере имя

Создание контроллера GridEditWindowAspect Указываем xtype ‘grideditwindowaspect’ Указываем в свойстве name уникальное в
для аспекта
Указываем в свойстве gridSelector селектор грида
Указываем в свойстве editFormSelector селектор окна редактирования
Указываем используемую модель в свойстве modelName
Указываем класс представления окна редактирования в свойстве editWindowView

Слайд 15

Создание контроллера События GridEditWindowAspect

Подписка производится перечислением в массиве listeners объектов, где имена свойств

Создание контроллера События GridEditWindowAspect Подписка производится перечислением в массиве listeners объектов, где
– имена событий, а значения – обработчики событий
Beforewindowcreated – перед созданием окна редактирования
Windowcreated – после создания окна редактирования
Beforerowaction – перед выполнением действия со строкой грида
Beforegridaction – перед выполнением действия с гридом
Beforesetformdata – перед заполнением окна редактирования данными
Aftersetformdata – после заполнения окна редактирования данными
Beforesaverequest – перед выполнением запроса на сохранение
Getdata – при получении данных для сохранения
Validate – при валидации формы
Beforesave – перед сохранением
Savesuccess – после успешного сохранения
Deletesuccess – после успешного удаления
Savefailure – при неудачном сохранении
Beforedelete – перед удалением

Слайд 16

Создание контроллера Инициализация

Описываем метод инициализации контроллера
Перечисляем события, на которые подписывается контроллер, передавая их

Создание контроллера Инициализация Описываем метод инициализации контроллера Перечисляем события, на которые подписывается
в качестве аргумента методу control()
При подписке на событие указываем в качестве имени свойства селектор компонента, который собираемся прослушивать, а в качестве значения – вложенный объект, у которого имена свойств – имена событий, а значения – методы обработки событий или еще вложенный объект, у которого указывается метод-обработчик в свойстве fn и контекст вызова обработчика в свойстве scope
Обязательно вызываем родительский инициализатор через callParent()

Слайд 17

Создание контроллера Метод index

Описываем метод, выполняющийся каждый раз при переходе по маршруту, соответствующему

Создание контроллера Метод index Описываем метод, выполняющийся каждый раз при переходе по
контроллеру, если в маршруте были переданы параметры, они придут в качестве аргументов метода index
Необходимо отобразить представление, соответствующее маршруту – для этого мы или получаем уже созданное представление, вызывая геттер getMainView(), или, если представление еще не было создано, создаем его, используя метод Ext.widget(), который принимает на вход алиас представления
Необходимо выполнить привязку контекста, вызвав метод bindContext(), для корректной работы при одновременном открытии несколько экземпляров представлений
Отобразить представление, вызвав метод application.deployView()

Слайд 18

Создание контроллера Передача параметров гриду

Обработчик описанного выше события afterrender грида
Получаем стор грида, вызывая

Создание контроллера Передача параметров гриду Обработчик описанного выше события afterrender грида Получаем
метод grid.getStore()
Подписываемся на его событие загрузки beforeload, вызываемое перед каждой загрузкой стора, где первым аргументом приходит сам стор, а вторым – объект, параметризирующий запрос на получение данных
Конфигурируем свойство params у объекта operation, указывая у него параметры, которые мы хотим передать гриду
Подписка на событие загрузки стора нельзя выполнять в методе index

Слайд 19

Создание права на просмотр реестра

В реализации класса PermissionMap (в проекте КП60 -

Создание права на просмотр реестра В реализации класса PermissionMap (в проекте КП60
Kp60PermissionMap) добавить регистрацию права
Вызвать метод Permission, передав первым аргументом внутреннее имя права, а вторым – его наименование на понятном юзеру языке

Слайд 20

Создание маршрута

В реализации интерфейса IClientRouteMapRegistrar (в КП60 - ClientRouteMapRegistrar) зарегистрировать новый маршрут
Вызвать

Создание маршрута В реализации интерфейса IClientRouteMapRegistrar (в КП60 - ClientRouteMapRegistrar) зарегистрировать новый
метод AddRoute на объекте map, передав ему экземпляр класса ClilentRoute, у которого в конструкторе первым параметром передается имя маршрута, а вторым – имя ExtJs класса контроллера, соответствующего указанному маршруту

Слайд 21

Создание элемента главного меню для перехода в реестр

В реализации интерфейса INavigationProvider (в

Создание элемента главного меню для перехода в реестр В реализации интерфейса INavigationProvider
КП60 - NavigationProvider) зарегистрировать элемент меню
Вызвать метод Add на объекте dictRegister, передав первым параметром наименование элемента меню, а вторым параметром – имя маршрута, на который будет перенаправлять нажатие на элемент меню
При желании можно последовательно вызвать метод AddRequiredPermission для указания имени права, которое будет требоваться для отображения элемента меню

Слайд 22

Создание стора

Создаем скрипт в поддиректории store
Указываем класс, от которого наследуемся
Указываем зависимости
Указываем модель

Создание стора Создаем скрипт в поддиректории store Указываем класс, от которого наследуемся Указываем зависимости Указываем модель

Слайд 23

Создание модели

Создаем скрипт в поддиректории model
Указываем класс, от которого наследуемся
Указываем прокси
Указываем поля

Создание модели Создаем скрипт в поддиректории model Указываем класс, от которого наследуемся
модели

Слайд 24

Создание контроллера

Создаем скрипт в поддиректории controller
Указываем класс, от которого наследуемся
Указываем зависимости
Указываем представления
Указываем

Создание контроллера Создаем скрипт в поддиректории controller Указываем класс, от которого наследуемся
ссылки
При необходимости указываем аспекты
Описываем метод init с подписками на события компонентов
Описываем метод index с отрисовкой представления

Слайд 25

Завершение создания контроллера

Создаем право в реализации класса PermissionMap
Регистрируем маршрут в реализации

Завершение создания контроллера Создаем право в реализации класса PermissionMap Регистрируем маршрут в
интерфейса IClientRouteMapRegistrat
Регистрируем элемент меню в реализации интерфейса INavigationProvider
У скриптов должен быть тип Embedded resource
После добавления скриптов необходимо выполнять построение шаблона RecourceManifest.tt
Имя файла: Создание-контроллера.pptx
Количество просмотров: 23
Количество скачиваний: 0