angularjs如何在视图中对数据库中的数据求和

yzckvree  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(426)

我有一个表格,一周中的每一天都有一列,在这个表格中,我用ng repeat,把那一周在某个特定项目上的工作时间。
从数据库中提取数据。我遇到的问题是,每个项目可以有不同的子项目,当这种情况发生时,它们都被放在同一个主项目下的行范围中,如图中所示(“su”项目有两个子项目“ghfgh”和“testtest”)。

现在,最后一列中的总小时数也会从数据库中提取出来,在数据库中,一个项目在特定的一周中的所有小时数都会被求和。如果一个项目有子项目,我怎么能把他们那周的工作时间也加在一行中呢(在图像中,我放了一个箭头,显示想要的结果)
如果我使用相同的代码将rowspan赋给子项目,它将正确的rowspan赋给total列,但显然只显示第一个子项目的小时数(在本例中为“ghfgh”)

<tr ng-repeat="p in vm.presences">
                <td ng-if="p.showProject" rowspan="{{p.projectCount}}">{{p.projectName}}</td>
                <td>{{p.description}}</td>
                <td>{{p.monday}}</td>
                <td>{{p.tuesday}}</td>
                <td>{{p.wednesday}}</td>
                <td>{{p.thursday}}</td>
                <td>{{p.friday}}</td>
                <td>{{p.saturday}}</td>
                <td>{{p.sunday}}</td>
                <td ng-if="p.showProject" rowspan="{{p.projectCount}}">{{p.total}}</td>
            </tr>

用于检查在给定的一周内是否有同一项目的多个条目,并将它们分组在同一行范围内的代码是

weeklyPresences.forEach((p, i) => {
                        const differentProject = i === 0 || weeklyPresences[i - 1].projectName !== p.projectName;

                        p.showProject = differentProject;

                        if (differentProject) {
                            p.projectCount = weeklyPresences.filter(pres => pres.projectName === p.projectName).length; 
                        } else {
                            p.projectCount = weeklyPresences[i - 1].projectCount;
                        }                        
                    });

                    return weeklyPresences;

你知道我怎样把子项目的时间分组吗?
我在考虑一些循环,检查一个项目是否有多个条目,如上面的代码,如果没有,var total保持不变,否则,它接受它们并在一个新的var中求和。

pdkcd3nj

pdkcd3nj1#

var arr= [1, 2, 3];
var sum = arr.reduce((a, b) => a + b, 0);
console.log(sum); // 6

相关问题