【发布时间】:2018-09-06 21:08:21
【问题描述】:
我正在根据以下数据类型构建图表:points = [insulin:20, cho:30];。 我使用 ng-repeat 循环遍历我的数组。 我使用索引作为 x 值,使用胰岛素或 cho 作为 y 值。 我希望索引作为 x 值,因为稍后我将使用日期作为 x 值,并希望显示 cho/insulin 值(如果它们发生在该日期)。 值绑定到索引,因为它们需要在 svg 中的那个时间范围内显示
<line class="insulinLine" ng-repeat="point in points | limitTo :
points.length-1"
ng-x1="{{((width /points.length) * $index ) + (width/points.length)}}"
ng-y1="{{((point.insulin / maxY) * 400)}}"
ng-x2="{{((width / points.length) * ($index + 1)) + (width/points.length)}}"
ng-y2="{{((points[$index + 1].insulin / maxY) * 400)}}"/>
我的问题出现在空值上,如果有空值,我希望 ng-repeat 跳过 y2 的索引直到下一个非空值,以便将线连接到下一个实际值。
我尝试过的选项是:
什么都不做,这会将 y 值设置到图的底部
-
ng-if,不显示空值将不会构建行
if="point.insulin!=null"
-
使用三元运算符会弄乱整个图表,这是合乎逻辑的,因为它只在每个点进行评估,而不是全局移动索引。
points[$index + 1].insulin !== null ? ((points[$index + 1].insulin / maxY) * 400) : ((points[$index + 2].insulin / maxY) * 400)
您可以将 x1,x2,y1,y2 值放在每个单独的点上,使用 javascript 中的函数来确定每一行的值,但应该有更简单的方法吗?
您能否设置一个条件来查找下一个非空值,然后使用该值并跳过该值的索引?
codepen 链接: https://codepen.io/mbezema/pen/bvWPVm
【问题讨论】:
标签: javascript html angularjs svg