【问题标题】:Using Vue.js plugin in single file component在单个文件组件中使用 Vue.js 插件
【发布时间】:2018-09-04 23:13:36
【问题描述】:

我想使用vue-chartkick 插件,但想在我的单文件组件中注册它而不是全局使用它。有没有办法实现和

一样

Vue.use(VueChartkick, { Chartkick })

在单文件组件中?我尝试导入插件,然后将其注册为组件,但它一直告诉我未定义相应的组件。这是我的单文件组件:

<template lang="pug" >
div
    area-chart(:data="monthlyRevenue")              
</template>
<script>

import Api from '../../../api';
import Chartkick from 'chartkick';
import VueChartkick from 'vue-chartkick'
import Chart from 'chart.js';

export default {
    name: 'reporting',
    components: {
        'area-chart': AreaChart
    },
    data() {
        return {
            monthlyRevenue: {}
        }
    },
    created() {
        Api.get(window.location.pathname)
          .then((response) => {
            this.monthlyRevenue = response.body;
          })
          .catch((response) => {
            this.handleErrors(response.body);
          });
    }
}
</script>

【问题讨论】:

  • 您始终可以通过script 包含文件...只需查看chartkick.com/vue 上的Without Yarn or Npm 部分
  • 嗨!你找到解决办法了吗?我也遇到了同样的问题,只是为了另一个插件

标签: javascript vue.js vue-component


【解决方案1】:

您需要创建一个新的 Vue 对象并将其声明为单个文件组件中的一个组件。我对 VueChartKick 不太熟悉。但这可能会奏效。

<template lang="pug" >
div
    area-chart(:data="monthlyRevenue")              
</template>
<script>

import Vue from 'vue';
import Api from '../../../api';
import Chartkick from 'chartkick';
import VueChartkick from 'vue-chartkick'
import Chart from 'chart.js';

// attach your other plugins in here as required
Vue.use(VueChartkick, {Chartkick});
const newCustomComponent = new Vue();

export default {
    name: 'reporting',
    components: {
        'area-chart': AreaChart,
        newCustomComponent: newCustomComponent,
    },
    data() {
        return {
            monthlyRevenue: {}
        }
    },
    created() {
        Api.get(window.location.pathname)
          .then((response) => {
            this.monthlyRevenue = response.body;
          })
          .catch((response) => {
            this.handleErrors(response.body);
          });
    }
}
</script> 

【讨论】:

    【解决方案2】:

    在你的 ma​​in.js 文件中添加插件初始化:

    import Chartkick from 'chartkick'
    import VueChartkick from 'vue-chartkick'
    import Chart from 'chart.js'
    Vue.use(VueChartkick, { Chartkick })
    

    【讨论】:

    • 是的,但我宁愿将它导入到我的单文件组件中,而 not 在我的 main.js 中。当我只在一个组件中使用它时,我看不出在 main.js 中导入插件的意义!所以基本上我的问题是是否可以在单文件组件中导入它?
    • 即使您想在 SFC 中调用 Vue.use,插件也不会意识到这一点,并且它正在安装的所有组件/指令/服务,无论哪种方式,它们都将是全局的。所以是的,在main.js中安装插件
    猜你喜欢
    • 2019-05-26
    • 2018-11-01
    • 1970-01-01
    • 2018-10-07
    • 2022-08-03
    • 2019-06-09
    • 2019-08-19
    • 2017-11-17
    • 2017-07-22
    相关资源
    最近更新 更多