D3.js 如何在主干视图中包含多个D3图表?

D3.js 如何在主干视图中包含多个D3图表?,d3.js,backbone.js,D3.js,Backbone.js,如何在主干视图中包含多个D3(可重用)图表 代码示例试图在主干视图(_视图)中呈现图表函数(chart()) 通过该示例,您可以看到: 多个图表是可能的 类名在控制台中呈现,但不使用图表函数呈现 当使用“chart”类名调用函数时,将显示图表的匹配数量(来自JSON对象) 在_view.render中调用图表函数时,预期输出为: 每个图表显示在以模型id作为div类名的div中。以下是模板: <div class="b <%= id %>"></div>

如何在主干视图中包含多个D3(可重用)图表

代码示例试图在主干视图(_视图)中呈现图表函数(chart())

通过该示例,您可以看到:

  • 多个图表是可能的
  • 类名在控制台中呈现,但不使用图表函数呈现
  • 当使用“chart”类名调用函数时,将显示图表的匹配数量(来自JSON对象)
在_view.render中调用图表函数时,预期输出为:

  • 每个图表显示在以模型id作为div类名的div中。以下是模板:

    <div class="b <%= id %>"></div>
    
    
    将D3图表添加到主干模板
    .酒吧{
    填充:绿色;
    }
    .安讯士{
    字体:10px无衬线;
    }
    .轴线路径,
    .轴线{
    填充:无;
    行程:#000;
    形状渲染:边缘清晰;
    }
    .x轴路径{
    显示:无;
    }
    标题:

    正文:


    据我所知,在视图实际附加到带有类“a”的div之前,调用了chart函数。我做了一些编辑(搜索edit_comments文本),当我运行代码段时,它似乎可以工作

    //图表函数
    函数图(类名){
    var margin={顶部:20,右侧:20,底部:30,左侧:40},
    宽度=100-边距。左侧-边距。右侧,
    高度=200-margin.top-margin.bottom;
    var x=d3.scale.ordinal().rangeRoundBands([0,宽度],100);
    变量y=d3.scale.linear().range([height,0]);
    var xAxis=d3.svg.axis()
    .比例(x)
    .东方(“底部”);
    var yAxis=d3.svg.axis()
    .比例(y)
    .东方(“左”)
    .勾号(5,“%”);
    var svg=d3.select(className).append(“svg”)
    .attr(“宽度”,宽度+边距。左侧+边距。右侧)
    .attr(“高度”,高度+边距。顶部+边距。底部)
    .附加(“g”)
    .attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
    x、 域名(“a”);
    y、 域([0,1]);
    svg.append(“g”)
    .attr(“类”、“x轴”)
    .attr(“变换”、“平移(0)”、“高度+”)
    .呼叫(xAxis);
    svg.append(“g”)
    .attr(“类”、“y轴”)
    .呼叫(yAxis);
    svg.selectAll(“.bar”)
    .数据([20])
    .enter().append(“rect”)
    .attr(“类”、“条”)
    .attr(“x”,10)
    .attr(“宽度”,20)
    .attr(“y”,48)
    .attr(“高度”,100);
    }
    //多个图表是可能的
    图表(“图表”);
    图表(“图表”);
    //模型
    _model=Backbone.model.extend({
    默认值:{
    标题:空,
    正文:空
    }
    });
    //收藏
    _collection=Backbone.collection.extend({
    模型:_模型,
    网址:'http://jsonplaceholder.typicode.com/posts/'
    });
    //此url的属性包括userId、id、title和body
    //看法
    _view=Backbone.view.extend({
    标记名:“div”,
    类名:“容器”,
    模板:35;.template($('#template').html()),
    render:function(){
    /*edit_comments-chartClassName用于附加到DOM的“_视图”*/
    this.chartClassName=“.b_”+this.model.attributes.id;/*编辑注释-在类名字符串concat中添加了“b_”*/
    this.el.html(this.template(this.model.attributes));
    //日志图表类名
    log(this.chartClassName);
    //图表(chartClassName);
    归还这个;
    }
    });
    //看法
    _View=Backbone.View.extend({
    el:“.a”,
    初始化:函数(){
    this.collection=new_collection();
    这是我的收藏({
    重置:正确
    });
    这个。render();
    this.listenTo(this.collection,'reset',this.render);
    },
    render:function(){
    此.集合.每个(功能(项){
    这是一份报告(项目);
    },这个);
    },
    renderA:功能(项目){
    var\u视图=新视图({
    型号:项目
    });
    这个.el.append(u View.render().el);
    图表(_View.chartClassName);/*编辑注释-将视图添加到DOM后调用图表*/
    }
    });
    新的_视图()
    
    
    将D3图表添加到主干模板
    .酒吧{
    填充:绿色;
    }
    .安讯士{
    字体:10px无衬线;
    }
    .轴线路径,
    .轴线{
    填充:无;
    行程:#000;
    形状渲染:边缘清晰;
    }
    .x轴路径{
    显示:无;
    }
    标题:

    正文:


    据我所知,在视图实际附加到带有类“a”的div之前,调用了chart函数。我做了一些编辑(搜索edit_comments文本),当我运行代码段时,它似乎可以工作

    //图表函数
    函数图(类名){
    var margin={顶部:20,右侧:20,底部:30,左侧:40},
    宽度=100-边距。左侧-边距。右侧,
    高度=200-margin.top-margin.bottom;
    var x=d3.scale.ordinal().rangeRoundBands([0,宽度],100);
    变量y=d3.scale.linear().range([height,0]);
    var xAxis=d3.svg.axis()
    .比例(x)
    .东方(“底部”);
    var yAxis=d3.svg.axis()
    .比例(y)
    .东方(“左”)
    .勾号(5,“%”);
    var svg=d3.select(className).append(“svg”)
    .attr(“宽度”,宽度+边距。左侧+边距。右侧)
    .attr(“高度”,高度+边距。顶部+边距。底部)
    .附加(“g”)
    .attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
    x、 域名(“a”);
    y、 域([0,1]);
    svg.append(“g”)
    .attr(“类”、“x轴”)
    .attr(“变换”、“平移(0)”、“高度+”)
    .呼叫(xAxis);
    svg.append(“g”)
    .attr(“类”、“y轴”)
    .呼叫(yAxis);
    svg.selectAll(“.bar”)
    .数据([20])
    .enter().append(“rect”)
    .attr(“类”、“条”)
    .attr(“x”,10)
    .attr(“宽度”,20)
    .attr(“y”,48)
    .attr(“高度”,100);
    }
    //多个图表是可能的
    图表(“图表”);
    图表(“图表”);
    //模型
    _model=Backbone.model.extend({
    默认值:{
    标题:空,
    正文:空
    }
    });
    //收藏
    _collection=Backbone.collection.extend({
    模型:_模型,
    网址:'http://jsonplaceholder.typicode.com/posts/'
    });
    //p