首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型重算场

模型重算场
EN

Stack Overflow用户
提问于 2018-05-02 12:08:42
回答 1查看 226关注 0票数 2

我需要重新计算某一事件的模型中的字段。我希望直接在模型中计算值,而不是在视图呈现器中计算,因为否则多个视图也需要自定义排序和分组函数,因此代码会大量膨胀。不过,如果这有帮助的话,我可以使用convert而不是calculate

模型上的字段:

代码语言:javascript
复制
fields: [{
    name: 'name',
    type: 'string'
},{
    name: 'localizedName',
    calculate: function(data) {
        return Globals.localize(data.name);
    }
}]

以及商店的功能:

代码语言:javascript
复制
onUILocaleChange: function() {
    this.each(function(record) {
        // force recalculate
    });
}

我做了一把小提琴,展示了我想要达到的行为,但没有坏脾气的解决办法:https://fiddle.sencha.com/#view/editor&fiddle/2g7g

我希望这个没有第73-75行的工作,在模型的位置。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 13:21:53

只需更改计算函数,将Globals.language作为参数发送:

代码语言:javascript
复制
{
     name: 'localizedName',
     persist: false,
     calculate: function(data) {
          return Globals.localize(data.name,Globals.language);
     }
}

然后更改本地化函数以接收该参数:

代码语言:javascript
复制
localize: function(v,l) {
            return Globals[l][v];
}

最后,在更改Globals.language on按钮事件处理程序之后,只需重新加载存储:

代码语言:javascript
复制
handler: function(btn) {
   Globals.language = 'de';
   btn.up('grid').getStore().load();
}

完全删除"onUILocaleChange“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50134326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档