mounted() { const ele = document.querySelector('.purchase-manage-bars'); const myChart = echarts.init(ele); const options = ({ // title: { // text: 'World Population' // }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, // legend: {}, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: { type: 'value', boundaryGap: [0, 0.1] }, yAxis: { type: 'category', data: ['采购计划', '采购管理', '采购退货'], }, series: [ { // name: '2011', type: 'bar', data: [100, 100, 100] }, ] }); myChart.setOption(options); }
时间: 2024-02-10 11:25:48 浏览: 60
这段代码是一个Vue组件的生命周期钩子函数`mounted`,在组件挂载后执行。它主要是使用echarts库来绘制一个柱状图。
首先,通过`document.querySelector('.purchase-manage-bars')`获取到HTML中具有类名为`purchase-manage-bars`的元素。然后,使用`echarts.init(ele)`初始化一个echarts实例,并将它挂载到这个元素上。
接下来,定义了一个`options`对象,包含了柱状图的配置信息。其中,`tooltip`定义了提示框的样式和触发方式,`grid`定义了图表的布局,`xAxis`和`yAxis`分别定义了x轴和y轴的类型和数据。
最后,通过`myChart.setOption(options)`将配置应用到echarts实例上,从而绘制出柱状图。
需要注意的是,代码中有些注释掉的部分是可以根据需求进行解开注释的,比如`title`和`legend`可以添加标题和图例。
相关问题
在vue2中的mounted中,通过 setTimeout(() => { const aa = document.querySelector('.ptp-layout .ant-tabs-nav').getBoundingClientRect().width; console.log(aa, 'aa'); })获取元素的宽度,获取不到,为什么?详细代码是什么?
在Vue2中,mounted钩子函数中获取元素的宽度是有可能获取不到的,原因是mounted钩子函数在组件挂载时只保证父组件的DOM已经渲染完成,但是子组件的DOM可能还没有渲染完成,因此获取不到子组件的DOM元素。
解决该问题的方法有两种:
1. 使用Vue.nextTick()方法,在DOM更新完毕后再获取元素的宽度。
详细代码如下:
```
mounted() {
this.$nextTick(() => {
const aa = document.querySelector('.ptp-layout .ant-tabs-nav').getBoundingClientRect().width;
console.log(aa, 'aa');
});
}
```
2. 使用watch监听子组件DOM的变化,在子组件DOM渲染完成后再获取元素的宽度。
详细代码如下:
```
mounted() {
this.$watch(() => this.$refs.childDom, (newVal, oldVal) => {
if (newVal) {
const aa = newVal.getBoundingClientRect().width;
console.log(aa, 'aa');
}
});
}
```
其中,$refs.childDom指的是子组件中需要获取宽度的DOM元素的引用。
<template> <div> <section id="content"></section> </div> </template> <script> import * as echarts from 'echarts' export default { name: 'Index', created() { console.dir('created') } mounted() { const content = document.querySelector('#content') const myChart = echarts.init(content) } } </script> <style scoped> #content{ width: 100px; height: 400px; background: #aaaaff; } </style>
这是一个Vue组件,它使用了echarts库来绘制图表。在组件的created生命周期函数中,打印出了"created",在mounted函数中,通过querySelector获取到id为"content"的元素,并将其传入echarts.init方法中,最终绘制出一个宽为100px,高为400px,背景为蓝色的图表。其中,scoped属性表示该组件的CSS样式仅在该组件内部生效。
阅读全文