重新计算模型的字段
Recalculate field of model
我需要在某个事件上重新计算模型中的字段。我想直接在模型中计算值,而不是在视图渲染器中,因为否则多个视图还需要自定义排序和分组函数,因此代码会大量膨胀。但是,如果有帮助,我可以使用 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
});
}
我制作了一个 fiddle 展示了我希望实现的行为,但没有糟糕的 hacky 解决方法:https://fiddle.sencha.com/#view/editor&fiddle/2g7g
我希望它在模型中就地没有第 73-75 行的情况下工作。
只需更改您的计算函数以将 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"。
我需要在某个事件上重新计算模型中的字段。我想直接在模型中计算值,而不是在视图渲染器中,因为否则多个视图还需要自定义排序和分组函数,因此代码会大量膨胀。但是,如果有帮助,我可以使用 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
});
}
我制作了一个 fiddle 展示了我希望实现的行为,但没有糟糕的 hacky 解决方法:https://fiddle.sencha.com/#view/editor&fiddle/2g7g
我希望它在模型中就地没有第 73-75 行的情况下工作。
只需更改您的计算函数以将 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"。