У меня целое поле на бэкенде. Это поле является смещением (задержка индекса CPI), которое может принимать значения от 0 до> N. Во внешнем интерфейсе я хочу отобразить поле со списком с этим значением / меткой:
{key: 0, label: "0 - 21/06/2020"}
{key: 1, label: "1 - 21/06/2021"}
{key: 2, label: "2 - 21/06/2022"}
{key: 3, label: "3 - ... "}
Количество опций рассчитывается таким образом: rent_end_date.year
- first_due_date.year
. Каждый раз, когда изменяется first_due_date
, параметры поля со списком должны вычисляться снова.
Для этого я инициализировал переменную indexOffsetChoices
с относительной формулой для вычисления вариантов каждый раз, когда изменяется first_due_date
:
viewModel: {
type: 'rentsdetailformmodel',
data: {
hideRentsDetailGrids: false,
indexOffsetChoices: []
},
formulas: {
calculateIndexOffsetChoices: {
bind: '{detailRecord.first_due_date}',
get: function (firstDueDate) {
var detailRecord = this.get('detailRecord'),
indexOffset = detailRecord.get('index_offset'),
rentEndDate = detailRecord.get('end_date');
if (indexOffset !== undefined && rentEndDate !== undefined) {
var choices = [];
for (i = 0; i < (rentEndDate.getFullYear() - firstDueDate.getFullYear()); i++) {
var RawCPIDate = new Date(firstDueDate.setFullYear(firstDueDate.getFullYear() + i)),
CPIDateFmt = Ext.Date.format(new Date(RawCPIDate), 'd/m/Y'),
label = i + ' - ' + CPIDateFmt;
choices.push({"key": i, "label": label});
}
this.indexOffsetChoices = choices;
}
}
}
}
},
Затем я добавил поле со списком со встроенным локальным хранилищем, которое указывает на переменную viewModel indexOffsetChoices
:
items: [{
xtype: 'combobox',
name: 'index_offset',
reference: 'index_offset',
fieldLabel: 'CPI Application Delay',
valueField: 'key',
displayField: 'label',
queryMode: 'local',
bind: '{detailRecord.index_offset}',
store: {
type: 'store',
storeId: 'rent__index_offset',
idProperty: 'key',
fields: ['key', 'label'],
data: this.indexOffsetChoices
}
}]
Но данные не загружаются. Это правильный подход? Как создать локальное хранилище на основе данных records / dynamici c? Чего мне не хватает?