【发布时间】:2020-04-30 01:56:20
【问题描述】:
我在后端有一个整数字段。该字段是一个偏移量(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
}
}]
但是数据没有加载。这是正确的做法吗?您如何根据记录/动态数据创建本地商店?我错过了什么?
【问题讨论】: