Источники данных
Настройка источника данных — один из основных этапов настройки списочных контролов, который позволяет отобразить в списках необходимые данные.
При построении списочный контрол вызывает метод query у источника данных и передает туда параметры фильтрации и навигации. Результатом выполнения метода является RecordSet, который в дальнейшем используется для отрисовки данных. Набор полей, возвращаемых методом, можно расширить. Для этого используется опция selectFields. Подробнее о функционале доп. полей читайте в статье.
Виды источников данных
Источником данных может выступать любой класс, реализующий интерфейс 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}}" />
Основы работы с источниками данных
- Источник данных необходимо задавать в опции source.
<!-- WML -->
<Controls.list:View source="{{_viewSource}}" />
- По умолчанию список отображает содержимое поля title. Имеется возможность поменять имя поля, данные которого отображаются в списке. Для этого необходимо в шаблоне отображения элемента списка установить опцию displayProperty, в которой указать имя поля, содержащего отображаемое значение. Опцию displayProperty не используют, если задан пользовательский шаблон в опции contentTemplate.
В следующем примере показано, что пользовательский шаблон отображает данные из поля description.
Жизненный цикл контрола при работе с источником данных
Обработать получение данных из источника позволяют функции, переданные в itemsReadyCallback и dataLoadCallback.
Функция itemsReadyCallback
Вызывается, когда экземпляр данных получен из источника и подготовлен к дальнейшей обработке контролом. Вызывается единожды в рамках жизненного цикла.
В примере функция используется для сохранения ссылки на items
, чтобы иметь возможноcть изменять items
далее.
<!-- WML -->
<Controls.list:View itemsReadyCallback="{{_myItemsReadyCallback}}" />
_myItemsReadyCallback = function(items) {
this._myItems = items;
}
deleteButtonClickHandler: function{
this._myItems.removeAt(0);
}
Функция dataLoadCallback
Вызывается каждый раз непосредственно после загрузки данных из источника. Её можно использовать для изменения данных еще до того, как они будут отображены в контроле.
Пример:
<!-- WML -->
<Controls.list:View dataLoadCallback="{{_myDataLoadCallback}}" />
_myDataLoadCallback = function(items) {
items.each(function(item) {
item.set(field, value);
});
}
В обеих функциях единственным аргументом является items с типом данных Types/collection:RecordSet, где содержатся загруженные данные.