Vue项目中el-table每列插入不同类型的svg图形
在每一个el-table-column中,插入写好的Svg的组件,如:
<el-table
:data="RelatedData"
>
<el-table-column
label="表头1"
prop="column1"
>
<template slot-scope="scope">
<Compent1:data1="scope.row.data1"></Compent1>
</template>
</el-table-column>
</el-table>
其中,RelatedData是该表格的数据,如果是不同源的话,需要提前先处理好,放到一个数组中,prop=“column1”表示该数据的一项,即表头。Compent1是写好的组件,data1是要传的数据,必须与该组件中的数据名称保持一致。
在第一版中,共有8组数据,理想情况是一行一个图,但是运行后发现8个图在一行,后来经过分析,发现错误之处,错误代码如下:
this.svg = d3
.select("#MySvg")
.append("svg")
.attr("width", width)
.attr("height", height)
我选择了#MySvg,并在里面加了新的svg图形,此处需要说明一下d3.append()的用法,在对页面上已存在的html元素,append会在已存在的元素中添加新的子节点,而对于页面中不存在的元素,它们则是直接添加新增的元素。
当第一个节点插入后,之后的插入svg操作都是在该svg后面,而不是我所设想的,每次调用Compent1组件,svg清空,重新append()一个新的svg在新的一行。
更改后的代码为:
this.svg = d3
.select(this.$el)
.append("svg")
.attr("width", width)
.attr("height", height)
$el指向当前组件的DOM元素。