Источники данных

Настройка источника данных — один из основных этапов настройки списочных контролов, который позволяет отобразить в списках необходимые данные.

При построении списочный контрол вызывает метод query у источника данных и передает туда параметры фильтрации и навигации. Результатом выполнения метода является RecordSet, который в дальнейшем используется для отрисовки данных.

Виды источников данных

Источником данных может выступать любой класс, реализующий интерфейс ICrud из библиотеки Types/source.

Наиболее распространены два вида источников данных:

  • Types/source:SbisService — источник данных, работающий с бизнес-логикой приложения СБИС. Необходимо настраивать при наличии серверной части приложения.
  • Types/source:Memory — источник данных, получающий данные из оперативной памяти. Необходимо настраивать для клиентских приложений.

В следующем примере в качестве источника данных использован класс Types/source:Memory.

// TypeScript
protected _viewSource: Memory;
protected _beforeMount(): void {
    this._viewSource = new Memory({
        keyProperty: 'id',
        data: [{id: 1, title: 'Notebooks'}]
    });
}
<!-- WML -->
<Controls.list:View source="{{_viewSource}}" />

Основы работы с источниками данных

  1. Источник данных необходимо задавать в опции source.
<Controls.list:View source="{{_viewSource}}" />
  1. Для корректной работы списочного контрола необходимо установить опцию keyProperty, в которой указать имя поля, содержащего первичный ключ записи.
<Controls.list:View source="{{_viewSource}}" keyProperty="id" />
  1. По умолчанию список отображает содержимое поля title. Имеется возможность поменять имя поля, данные которого отображаются в списке. Для этого необходимо в шаблоне отображения элемента списка установить опцию displayProperty, в которой указать имя поля, содержащего отображаемое значение. Опцию displayProperty не используют, если задан пользовательский шаблон в опции contentTemplate.

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

Жизненный цикл контрола при работе с источником данных

Обработать получение данных из источника позволяют функции, переданные в itemsReadyCallback и dataLoadCallback.

Функция itemsReadyCallback

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

В примере функция используется для сохранения ссылки на items, чтобы иметь возможноcть изменять items далее.

<Controls.list:View itemsReadyCallback="{{_myItemsReadyCallback}}" />
_myItemsReadyCallback = function(items) {
    this._myItems = items;
}
deleteButtonClickHandler: function{
    this._myItems.removeAt(0);
}

Функция dataLoadCallback

Вызывается каждый раз непосредственно после загрузки данных из источника. Её можно использовать для изменения данных еще до того, как они будут отображены в контроле.

Пример:

<Controls.list:View dataLoadCallback="{{_myDataLoadCallback}}" />
_myDataLoadCallback = function(items) {
    items.each(function(item) {
        item.set(field, value);
    });
}

В обеих функциях единственным аргументом является items с типом данных Types/collection:RecordSet, где содержатся загруженные данные.