过滤数据以有条件地渲染元素

心智分析

我遇到过这样-在d3中过滤数据以绘制圆形或正方形

如果存在某个data属性,我将遵循以下条件来尝试有条件地呈现某些文本元素。

问题在于,由于在追加之后调用了过滤器,因此上述帖子中的可接受答案导致添加了空元素。

我试图在进行追加调用之前过滤数据,如下所示:

layers.selectAll('text')
    .data(function(d) {
        return d.dataPointValues;
    })
    .filter(function(d){
        return angular.isDefined(d.pointLabel);
    })
    .enter()
    .append('text')
    .text(function(d) {
        return d.pointLabel;
    })
    .attr('x', function(d) {
        return x(d.pointKey) + x.rangeBand() / 2;
    })
    .attr('y', function(d) {
        return y(d.y0 + d.pointValue) - 5;
    })
    .attr('class', 'data-value');

但是我从d3中得到了一个错误:

TypeError:layers.selectAll(...)。data(...)。filter(...)。enter不是函数

如何仅使用过滤器添加必要数量的文本元素,还是应该在此处使用其他方法?

an

您可以尝试像这样将过滤器应用于数据函数中的数据

layers.selectAll('text')
.data(function(d){d.dataPointValues.filter(function(dp){ return angular.isDefined(dp.pointLabel); }})
.enter()
.append('text')
.text(function(d) {
    return d.pointLabel;
})
.attr('x', function(d) {
    return x(d.pointKey) + x.rangeBand() / 2;
})
.attr('y', function(d) {
    return y(d.y0 + d.pointValue) - 5;
})
.attr('class', 'data-value');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

过滤数据以有条件地渲染元素

来自分类Dev

根据功能组件中的数据有条件地渲染元素

来自分类Dev

有条件地过滤数据透视表

来自分类Dev

有条件地过滤数据透视表

来自分类Dev

如何有条件地渲染

来自分类Dev

有条件地渲染图标

来自分类Dev

有条件地渲染转发器中的元素

来自分类Dev

有条件地在反应片段中渲染多个元素

来自分类Dev

用于有条件地渲染包装器元素的自定义指令

来自分类Dev

如何在 Vue.js 中有条件地渲染元素?

来自分类Dev

有条件地渲染p:commandLinks

来自分类Dev

有条件地渲染.hbs模板emberjs

来自分类Dev

有条件地渲染<ui:include>

来自分类Dev

ExtJS有条件地渲染输入字段

来自分类Dev

使用Futurebuilder有条件地渲染小部件

来自分类Dev

如何有条件地渲染原因反应组件?

来自分类Dev

有条件地反应测试库渲染组件

来自分类Dev

使用hidden属性与有条件地渲染组件

来自分类Dev

如何在Angular中有条件地渲染?

来自分类Dev

有条件地在react jsx中渲染className

来自分类Dev

如何有条件地渲染来自API的响应

来自分类Dev

有条件地渲染p:commandButton的title属性

来自分类Dev

使用高阶组件有条件地渲染列表

来自分类Dev

无法有条件地获得 html 渲染?

来自分类Dev

在 React 组件中有条件地渲染 <td>

来自分类Dev

如何有条件地渲染 Angular 组件

来自分类Dev

有条件地渲染 aframe 中的组件

来自分类Dev

使用Javascript有条件地过滤对象数组

来自分类Dev

有条件地过滤重复的行