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
相关产品推荐
相关产品推荐

