ElemeFE / v-charts

基于 Vue2.0 和 ECharts 封装的图表组件📈📊
https://v-charts.js.org
MIT License
6.8k stars 1.98k forks source link

标题无法显示 #191

Closed BlackHole1 closed 6 years ago

BlackHole1 commented 6 years ago

在vue里,使用

import VeLine from 'v-charts/lib/line'
Vue.component(VeLine.name, VeLine)

后,标题无法显示出来。 我是按照这个例子来进行测试的:https://jsfiddle.net/aa7ojxyt/25/

BlackHole1 commented 6 years ago

直接script引入echarts、v-charts是可以的,但是import是不行的。难道需要先install echarts,然后在import echarts才可以么。那这样话,我为了添加标题,就要引入两个package了

xiguaxigua commented 6 years ago
import 'echarts/lib/component/title'

需要引入title模块

BlackHole1 commented 6 years ago

进过测试,发现直接import 'echarts/lib/component/title'是没有任何用处的。核心代码环境如下: main.js:

import VeLine from 'v-charts/lib/line'
Vue.component(VeLine.name, VeLine)

vue组件:

<ve-line :data="chartData" :title="chartTitle"></ve-line>

import 'echarts/lib/component/title'
export default {
  data () {
    return {
      chartData: {
        columns: ['日期', '余额', '比率'],
        rows: [
          { '日期': '1月1日', '余额': 123, '比率': 0.3 },
          { '日期': '1月2日', '余额': 1223, '比率': 0.6 },
          { '日期': '1月3日', '余额': 2123, '比率': 0.9 },
          { '日期': '1月4日', '余额': 4123, '比率': 0.12 },
          { '日期': '1月5日', '余额': 3123, '比率': 0.15 },
          { '日期': '1月6日', '余额': 7123, '比率': 0.20 }
        ]
      },
      chartTitle: 'title'
    }
  }
}

很抱歉,由于jsfiddle.net无法模拟出import效果,无法更加的直观说明问题

xiguaxigua commented 6 years ago
this.chartTitle = {
  text: '标题'
}

chartTitle 应该是对象 http://echarts.baidu.com/option.html#title

BlackHole1 commented 6 years ago

抱歉,我代码里是对象。描述问题的时候,没有写对。请您稍等片刻,我再新建一个github项目,用来复现一下。您这边也方便查看

xiguaxigua commented 6 years ago

https://codesandbox.io/s/3vqyx8mzzp?module=%2FApp.vue 是这样的效果吗?

BlackHole1 commented 6 years ago

是这个效果,但是我这边却无法实现,即使代码是一样的,我也在github上找到了其他人的代码,还是不行,我正在复现这个问题,可能是我这边的写法有问题导致的

BlackHole1 commented 6 years ago

复现成功 项目地址:v-chartsBugReappearance 复现commit:https://github.com/BlackHole1/v-chartsBugReappearance/commit/5e4c93e211bdd5a873ac216c1984b477ef47b5fb

xiguaxigua commented 6 years ago

升级一个版本试试 v1.16.2

BlackHole1 commented 6 years ago

可以了,为什么会出现这种问题呢?

xiguaxigua commented 6 years ago

之前 为了用户使用方便,echarts 被定义为 dependencies(这样用户就不需要额外安装 echarts,npm 会自动安装 echarts),当你的项目里面已经有一个3.x 版本的 echarts 之后,再安装一个 echarts4.x,npm 会将 v-charts 所依赖的 echarts 移到 v-charts 下,此时 import 'echarts/lib/component/title' ,引入的不是 v-charts 所依赖的 echarts,因为实例不同, title 模块加到了不是 v-charts 依赖的 echarts 上,所以title 就不生效了;解决的办法比较简单,就是把 echarts 从dependencies切换为 peerDependencies ,这样 v-charts 就会拿项目中安装的 echarts,用的就始终都是一个实例了,只是这样需要用户显式的安装 echarts 。

BlackHole1 commented 6 years ago

感谢解答