车把帮忙跑步总数?

时间:2014-02-04 20:36:48

标签: javascript json reporting handlebars.js

我有一个html 5 Angular应用程序,需要最终用户自定义业务报告。后端Node REST api为报告提供JSON数据。

我正在考虑的解决方案是使用Handlebars作为报告模板“引擎”。数据将来自服务器,附带一个模板,该模板将在运行时在客户端进行编译并显示在页面上。

用户可以自定义模板并将其保存回来。

关键点是总计。我想在模板中执行此操作,并且我已尝试制作自定义帮助程序,但我无法可靠地保持状态。

以下是我的尝试:

Handlebars.registerHelper('runningTotal', function(k, v, r) {
//k=Key, v=numeric value, r='root' key in the json data
if (!r[k]) {
    r[k] = v;
} else {
    r[k] += v;
}
return r[k]; });

在我的模板中,我称之为:

 '{{runningTotal "labor" lineTotal ../../../rptState}}' +                              
 '{{/each}}' +

传递给“runningTotal”帮助器的参数是“labor”,它是存储运行总计的键的名称,“lineTotal”,它是需要保持总计的现有JSON数据键的名称,最后是“rptState”,它是现有的JSON数据密钥,用于保存运行总计。

JSON数据对象在顶层添加了一个自动空对象键,称为rptState,用于保存此类数据。

我所看到的是它在每个块结束之前都能正常工作,此时似乎JSON数据“重置”回原来的状态并且我的助手添加的键丢失了。这意味着我不能做总计,甚至不能正确打印每个块底部的运行总计,因为它在每个块的末尾重置。

我是否正确地解决了这个问题,只是错过了一些细节,还是完全有更好的方法?

0 个答案:

没有答案