Расширенный формат разметки, который позволяет управлять отображением полей, их состоянием и валидацией.
// Форма для отображения простого текстового поля. { xtype ‘textfield’ name ‘c_address’ value ‘ ’ label ‘Адрес’ hint ‘Ввести адрес’ }
Список свойств, которые могут указываться у всех:
- require: Boolean – обязательность.
- value: Any – значение.
- name: String – имя переменной, должно быть уникально в рамках формы.
- label: String – пользовательское наименование поля.
- align: String – top|bottom|left|right|center
- margin: Integer – отступ. По умолчанию 0
- hidden: Boolean – скрыть.
- disabled: Boolean- отключить.
- layout: String – ориентация шаблона.
Событие для всех полей:
- oninit — инициализация
textfield
Текстовое поле для отображения текста, основными свойствами должны являться:
- minLength: Integer – минимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
- maxLength: Integer – максимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
- hint: String – текст подсказки
- inputType: String – тип вводимых данных. Возможные значения:
- email –электронный адрес
- phone – формат телефона
- number – число
- date – дата
- events:
- onchange – изменение объекта
textview
Текстовое поле для ввода «длинного текста»:
- minLength: Integer – минимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
- maxLength: Integer – максимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
- events:
- onchange – изменение объекта
numberfield
Поле для ввода числа, как с плавающей точкой, так и без.
- maxValue: Number – максимально значение.
- minValue: Number – минимальное значение.
- hint: String – текст подсказки
- decimalPrecision: Number – количество символов после запятой. Если значение 0, то должно быть целочисленное число.
- events:
onchange – изменение объекта
xtype 'numberfield' name 'bottles' label 'Bottles of Beer' value 99 maxValue 99 minValue 0 hint ‘Ввести номер’
combo
Отображает выпадающий список, с заранее известными данными.
- store: Any[] – массив данных.
- displayField: String – поле которое должно использоваться для отображения пользователю.
- valueField: String – поле которое должно использоваться для сохранения, как значение.
- events:
- onchange – изменение объекта
xtype ‘combo’ label 'Choose State', store [ { name ‘Саша’ addr ‘Cheboksary } ] displayField 'name' valueField 'abbr'
switchfield
Переключатель:
- checked: Boolean – выбрано значение или нет. Значения true|false
- layout: ‘vbox’
- events:
- onchange – изменение объекта
xtype ‘switchfield’ label 'Artichoke Hearts' name 'topping' checked true
radiogroup
Группа элементов с возможность выбора только одного значения:
- items: any[] – список для выбора
- text: String
- value: Any
- checked: Boolean
- events:
- onchange – изменение объекта
xtype ‘radiogroup’ label 'Artichoke Hearts' name 'topping' items [ { text ‘Муж’ value 1 checked true } { text ‘Котенок’ value 2 } ]
datefield
Поле для вывода даты:
- maxValue: String|Date – максимальное значение
- minValue: String| Date – минимальное значение
- events:
- onchange – изменение объекта
xtype 'datefield' label 'From' name 'from_date' maxValue ‘2021-03-11’ minValue ‘2021-01-01’
Для указания, текущего для должно устанавливаться значение ‘NOW’
displayfield
Отображает поле, которое должно выводиться только для чтения.
- events:
- oninit — инициализация
xtype 'displayfield' label 'Home' name 'home_score’ value '10'
button
Кнопка
- text: String – текст кнопки
- events:
- onclick
xtype 'button' name ‘clickme’ text 'click me’ onclick { }
Дополнительно можно указать описание кнопки при помощи label.
Контейнеры
Для группировки полей должен применяться один из двух компонентов:
- vbox – расположение дочерних элементов по вертикали.
- hbox – расположение дочерних элементов по горизонтали.
- events:
- oninit — инициализация
layout 'hbox' items [ { xtype 'displayfield' label 'Home' name 'home_score' value '10' } { xtype 'displayfield' label 'Premise' name 'premise_score' value '1A' } ]
В примере выше указано, что два элемента «Home» и «Premise» располагаются горизонтально.
Пример разметки
xtype 'container' layout 'vbox' name 'id' items [ { xtype 'displayfield' label 'Welcome text' value 'Hello, people!!!' name 'welcomeId' layout 'hbox' } { xtype 'displayfield' value 'Hello2' name 'welcomeId2' } { xtype 'textfield' value 'simple' name 'textfield' label 'Текстовое поле' require true onchange { } } { xtype 'numberfield' name 'simpleNumber' label 'Число' maxValue 5 minValue 3 decimalPrecision 1 onchange { } } { xtype 'switchfield' name 'simpleSwitch' label 'Согласен' checked true layout 'vbox' onchange { log('switchfield change'); } } { xtype 'combo' name 'simpleCombo' label 'Пол' displayField 'text' valueField 'id' value 2 layout 'hbox' store [ { id 1 text 'Муж' } { id 2 text 'Жен' } ] onchange { var d = __current__.getValue(); log(d); } } { xtype 'datefield' name 'simpleDate' label 'Дата' format 'dd.MM.yyyy' onchange { var d = __current__.getValue(); log(d); } } { xtype 'button' name 'clicker' text 'Согласен' label 'Я подписываюсь под всем что есть' layout 'vbox' value 0 onclick { var val = clicker.getValue(); var i = val + 1; clicker.setValue(i); log(i); } } { xtype 'radiogroup' name 'simpleRadioGroup' label 'Отличный выбор' value 1 items [ { text 'Муж' value 1 } { text 'Котенок' value 2 } ] onchange { var v = __current__.getValue(); log(v); } } ]