我需要重新计算某一事件的模型中的字段。我希望直接在模型中计算值,而不是在视图呈现器中计算,因为否则多个视图也需要自定义排序和分组函数,因此代码会大量膨胀。不过,如果这有帮助的话,我可以使用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行的工作,在模型的位置。
发布于 2018-05-02 13:21:53
只需更改计算函数,将Globals.language作为参数发送:
{
name: 'localizedName',
persist: false,
calculate: function(data) {
return Globals.localize(data.name,Globals.language);
}
}然后更改本地化函数以接收该参数:
localize: function(v,l) {
return Globals[l][v];
}最后,在更改Globals.language on按钮事件处理程序之后,只需重新加载存储:
handler: function(btn) {
Globals.language = 'de';
btn.up('grid').getStore().load();
}完全删除"onUILocaleChange“。
https://stackoverflow.com/questions/50134326
复制相似问题