Перейти к содержанию

Memo#

Элемент управления, предназначенный для отображения и редактирования текста, с возможностью задания количества строк

Свойства#

id#

Идентификатор контрола.

Отнаследовано от Control

hint#

Всплывающая подсказка, которая появляется при наведении на контрол.

Отнаследовано от Control

hintLength#

тип значение по умолчанию допустимые значения
int -

максимальное количество символов для всплывающей подсказки

tags#

Позволяет объединять контролы в группы, возвращает массив имен.

Отнаследовано от Control

captionWidth#

Ширина заголовка в колонках (для Bootstrap-верстки).

Отнаследовано от Control

editorWidth#

Ширина контрола в колонках (для Bootstrap-верстки).

отнаследовано от Control

captionTextAlign#

тип значение по умолчанию допустимые значения
string left left, right

Выравнивание текста заголовка контрола.

доступно с версии 3.26.0

denyRoles#

Список ролей без прав на данный элемент.

Отнаследовано от Control

readRoles#

Список ролей на чтение данных.

Отнаследовано от Control

writeRoles#

Список ролей на изменение данных.

Отнаследовано от Control

visible#

Видимость контрола.

Отнаследовано от Control

width#

Ширина контрола.

Отнаследовано от Control

caption#

тип значение по умолчанию допустимые значения
string -

Заголовок контрола

placeholder#

тип значение по умолчанию допустимые значения
string -

Вспомогательный текст в поле ввода контрола

bind#

тип значение по умолчанию допустимые значения
string -

Свойство, к которому биндится контрол

editMode#

тип значение по умолчанию допустимые значения
string inline popup, inline

Режим редактирования.

Для memo в гриде - только popup

controlRows#

тип значение по умолчанию допустимые значения
int 1

Количество строк.

Количество однострочных контролов, по общей высоте которых (с учетом расстояния между ними) вычисляется высота memo,в случае заданного height вычисляется через height

format#

тип значение по умолчанию допустимые значения
string text text, html

Задает формат редактирования/отображения текста

value#

тип значение по умолчанию допустимые значения
string -

Задает значение контрола

enabled#

тип значение по умолчанию допустимые значения
bool true true/false

Доступность контрола для редактирования

readOnly#

тип значение по умолчанию допустимые значения
bool false true/false

Режим "только для чтения"

height#

тип значение по умолчанию допустимые значения
string auto

Высота мемо в пикселях.

По умолчанию "auto" и вычисляется через controlRows. Например, height = "100px".

font#

тип значение по умолчанию допустимые значения
string -

Стиль шрифта по умолчанию.

Стиль шрифта который будет выбран по умолчанию, по умолчанию берется шрифт заданный в теме

fontSize#

тип значение по умолчанию допустимые значения
string - 13px

Размер шрифта который будет выбран по умолчанию

sourceCodeEditable#

тип значение по умолчанию допустимые значения
bool false true/false

Доступность редактирования html кода. Редактирование доступно, если format = "html".

Методы#

focus#

Устанавливает фокус на контрол.

Отнаследовано от Control.

События#

valueChanged#

Возникает при смене значения

параметр тип описание
s Memo экземпляр класса контрола
e object
e.args object аргументы события
e.args.value string текст в контроле
1
2
3
4
5
6
7
8
s = Memo {
    ... // экземпляр класса Memo
},
e = {
    args: {
        value: 'Тестовое сообщение'
    }
}
Пример
<Memo ... valueChanged="test" />
1
2
3
4
test (s, e) {
    console.log('s', s)
    console.log('e', e)
}

html форматирование#

Для html форматирования необходимо задать свойство format со значением html.

Поддерживаемый функционал:

  • Жирный текст
  • Курсивный текст
  • Подчеркнутый текст
  • Тип шрифта
  • Размер шрифта
  • Цвет текста
  • Цвет фона
  • Выравнивание по левому краю
  • Выравнивание по правому краю
  • Выравнивание по центру
  • Отступ слева
  • Нумерованный список
  • Маркерованный список
  • Вставить ссылку
  • Вставить картинку

Особенности работы в режиме html#

Контрол memo в режиме редактирования html будет отображать входную строку в виде html-документа.

Для защиты от xss-уязвимости определен набор допустимых тегов:

Информация

div, span, li, ul, ol, br, blockquote, p, b, em, strong, sub, pre, i, font, h1, h2, h3, h4, u, strong, em, a, img.

Эти теги используются для html форматирования документа. Все остальные теги будут экранированы и отображены в виде текста. В гриде (в Memo колонке) для увеличения производительности все запрещенные теги удаляются перед добавлением в разметку страницы, вместо их поиска и последующего экранирования.

Если присваивается невалидный html, то браузер может обрезать часть строки, что может привести к потере данных при сохранении документа. В связи с этим, если прикладник сам формирует строку, которая в дальнейшем будет использоваться контролом Memo, необходимо учитывать, что спецсимволы '>' и '<' в формируемой строке должны использоваться только для создания разрешенных тегов, в остальных случаях их необходимо экранировать.

При редактировании данных через контрол экранирование спецсимволов ('<', '>', '&' и др.) происходит автоматически. Например, если пользователь вводит строку '1 > 5', то в контроле это значение будет храниться в экранированном виде - '1 > 5'. Тут мы видим, что отображаемый символ '>' заменился на значение '>', но на отображение в контроле это никак не влияет.

Работа с изображениями#

Контрол Memo в режиме редактирования html поддерживает вставку изображений с помощью комбинации клавиш Ctrl-V и контекстное меню.

Метод Memo getTextForSend возвращает deferred объект, результом которого будет текст, изображения в котором не будут ссылаться на сайт, что позволяет просматривать его там где нет доступа к сайту. Пример использования:

Пример
1
2
3
4
5
6
7
sendEmail() {
this.controls.memoHtml.getTextForSend().done(text => {
    //отправка текста через метод backend.sendEmail
}).fail(e => {
    // обработка возникшей ошибки
})
}

Баги#

Не работает вставка текста из буфера обмена в браузере Firefox (протестировано в Firefox версии 49.0.1).

Примечания#

  • В ячейке грида и во всплывающей подсказке (hint) текст отображается без форматирования. При этом слова могут объединяться, если используется переход на новую строку.
  • В IE11 выключена возможность drag&drop.
  • В IE11 не пооддерживается вставка изображений, если начальное изображение имеет представление в виде ссылки на сторонний ресурс (в атрибуте src тэгa img указан сторонний ресурс).

Пример#

<Group caption="Memo">
    <Memo caption="Большой текст" id="memoInput" 
        controlRows="5" 
        editorWidth="4" captionWidth="2" />
    <Memo caption="Всплывающий редактор" id="memoInputPopup" 
        controlRows="3" editMode="popup"
        editorWidth="4" captionWidth="2" />
    <Memo caption="Всплывающее окно и формат" id="memoInputFormat" 
        controlRows="3" editMode="popup" format="html"
        editorWidth="4" captionWidth="2" />
</Group>

Контрол Memo предоставляет более комфортный способ ввода и отображения текстовых данных большого объема. Для этого в контроле реализован режим редактирования во всплывающем окне (свойство editMode) и режим, поддерживающий форматирование текста (свойство format). Также можно настроить количество отображаемых строк текста (свойство controlRows).