You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ext JS技术问题:如何计算两个不同JSON Store的值之和?

解决方案:计算两个Store的TOTALCOUNT之和

嘿,我来帮你搞定这个求和的问题!既然你已经通过formulas绑定并获取了两个Store的TOTALCOUNT值,那只需要在同一个formulas对象里新增一个计算总和的项,让它依赖前面的两个值,就能自动算出总和啦。

修改后的完整代码示例

formulas: {
    firstStore: {
        bind: { bindTo: '{firstStatStore}', deep: true },
        get: function (store) {
            var record = store.findRecord(MyApp.Names.CODE, MyApp.Names.TOTALSTAT);
            // 建议返回数字-1而非字符串,方便后续计算
            return record ? record.get(MyApp.Names.TOTALCOUNT) : -1;
        }
    },
    secondStore: {
        bind: { bindTo: '{secondStatStore}', deep: true },
        get: function (store) {
            var record = store.findRecord(MyApp.Names.CODE, MyApp.Names.TOTALSTAT);
            return record ? record.get(MyApp.Names.TOTALCOUNT) : -1;
        }
    },
    totalSum: {
        // 绑定依赖的两个值,当它们变化时自动重新计算总和
        bind: { 
            first: '{firstStore}',
            second: '{secondStore}'
        },
        get: function(values) {
            // 处理可能的-1(未找到记录的情况),这里按0计入总和,你可以按需调整
            const firstVal = values.first === -1 ? 0 : Number(values.first);
            const secondVal = values.second === -1 ? 0 : Number(values.second);
            
            // 返回两个值的和
            return firstVal + secondVal;
        }
    }
}

关键细节说明

  • 依赖绑定:totalSum的bind配置里指定了依赖firstStore和secondStore,这样当任意一个Store的TOTALCOUNT更新时,总和会自动重新计算,无需手动触发。
  • 类型安全处理:用Number()确保值是数值类型,避免出现字符串拼接(比如如果返回的是字符串"-1",直接相加会得到"123-1"这种错误结果)。
  • 异常情况处理:这里把未找到记录时的-1替换成了0,如果你希望这种情况总和显示-1或者其他标识,可以修改逻辑,比如:
    if (values.first === -1 || values.second === -1) {
        return -1;
    }
    return Number(values.first) + Number(values.second);
    

内容的提问来源于stack exchange,提问作者Nuri Engin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:32:27