У меня есть требование пересчитать поле в модели по определенному событию. Я хочу вычислить значение непосредственно в модели, а не в визуализаторах представлений, потому что в противном случае для нескольких представлений также потребовались бы специальные функции сортировки и группировки, поэтому код сильно раздулся бы. Однако я мог бы использовать convert
вместо calculate
, если это поможет.
Поля на модели:
fields: [{
name: 'name',
type: 'string'
},{
name: 'localizedName',
calculate: function(data) {
return Globals.localize(data.name);
}
}]
и функция в магазине:
onUILocaleChange: function() {
this.each(function(record) {
// force recalculate
});
}
Я сделал скрипт, который демонстрирует поведение, которого я хочу добиться, но без плохого хакерского обходного пути: https://fiddle.sencha.com/#view/editor&fiddle/2g7g
Я бы хотел, чтобы это работало без строк 73-75, на месте в модели.