如何在vue.js组件中使用导入的JavaScript库构造函数?

多杰

我想重用我在vue.js组件中做过的javascript库。

js库的工作方式如下:

  1. 使用标记在主脚本上简单引用
  2. CSS加载

该库提供了一个构造函数,因此需要一个具有ID的元素,并在javascript中初始化该组件,我只需要:

var divelement = new pCalendar("#divelement", {
    ... various options
});

我正在尝试创建一个能够执行相同操作的.vue组件(加载js库,init css,带有构造函数和选项的init组件),但是我不知道哪种方法是正确的。

这就是我正在处理的内容,但是在这种情况下,我会收到错误消息,因为pCalendar无法识别为构造函数。

<template>
    <div id="myelement"></div>
</template>
<script>
    import perpetual_calendar from '../../../assets/js/perpetual-calendar/perpetual_calendar.js'
  export default {
    data () {
      return {
        myelement: '',
      }
    },
    mounted(){
          var myelement = new pCalendar("#myelement",{
        ... various options
});        
      } ,  

 }
</script>
<style lang="css">
    @import '../../../assets/js/perpetual-calendar/pcalendar_style.css';
</style>

编辑1(@Daniyal Lukmanov问题的答案):

perpetual_calendar.js看起来像这样:

var pCalendar = function (element, options) {
    this.options = {};
    this.initializeElement(element);
    this.initializeOptions(options || {});
    this._create();
}
...

pCalendar.prototype.initializeElement = function (element) {
    var canCreate = false;
    if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
        this.element = element;
        canCreate = true;
    } else if (typeof element === "string") {
        this.element = document.querySelector(element);
        if (this.element) {
            canCreate = true;
        } else {
            canCreate = false;
        }
    } else {
        canCreate = false;
    }

    if (canCreate === true) {
        if (document.getElementsByName(this.element.id+"_store").length!=0) {
            canCreate = false;
        }    
    }
    return canCreate;
};

and so on ...

编辑2:这是initializeOptions函数,将引发TypeError:“ this.element为null”错误。

pCalendar.prototype.initializeOptions = function (options) {
    // begin hardcoded options, don't touch!!!
    this.options['objectId'] = this.element.id;
    this.options['firstMonth'] = null;
       (... various options)
    // end hardcoded options

    for (var key in this.defaultOptions) {
       ( ... loop to load options - default one or defined by user in the constructor)
    }
};
标题

在你perpetual_calendar.js的文件,你需要exportpCalendar才能使用它。perpetual_calendar.js文件底部,添加:

export {
  pCalendar
};

现在,您应该可以像这样导入和使用它:

import { pCalendar } from './perpetual_calendar.js';
let calendar = new pCalendar({ /* parameters*/ });

编辑后添加initializeElement方法

代码中有些错误:

  1. 似乎并非所有initializeElement设置this.element变量的代码路径
  2. document.querySelector将无法正常工作。您将需要通过this.$refs变量传递元素
<template>
    <div id="myelement" ref="myelement"></div>
</template>
<script>
    import perpetual_calendar from '../../../assets/js/perpetual-calendar/perpetual_calendar.js'
  export default {
    data () {
      return {
        myelement: '',
      }
    },
    mounted(){
          var myelement = new pCalendar(this.$refs["myelement"], { /* various options */ });        
    }

 }
</script>
<style lang="css">
    @import '../../../assets/js/perpetual-calendar/pcalendar_style.css';
</style>

现在,您可以将a作为对象直接传递elementperpetual_calendaras,而不必使用document.querySelector

pCalendar.prototype.initializeElement = function (element) {
    this.element = element.
    return true;
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Vue组件中使用Bootstrap?

来自分类Dev

Vue 如何在组件中使用 id?

来自分类Dev

如何在Nuxt.js中使用Vue测试库?

来自分类Dev

如何在Vue中使用全局函数?

来自分类Dev

如何在 Vue.js cli 项目中使用外部 Javascript 库?

来自分类Dev

如何在Javascript中使用父子构造函数?

来自分类Dev

如何在Javascript中使用父子构造函数?

来自分类Dev

如何在 ReactJs 组件中使用外部 JavaScript 函数?

来自分类Dev

如何在父组件中使用Vue.js子组件中的数据?

来自分类Dev

如何在VUE项目中使用导入的字体?

来自分类Dev

如何在功能组件中使用插件的指令-Vue 2

来自分类Dev

如何在组件中使用Vue mixin方法

来自分类Dev

如何在 symfony 4 中使用单文件 vue 组件?

来自分类Dev

如何在构造函数中使用@Value?

来自分类Dev

如何在构造函数中使用setTimeout

来自分类Dev

如何在构造函数中使用 <vector>

来自分类Dev

使用Vue.js,如何在v-for循环中使用模式组件?

来自分类Dev

如何在Vue中使用jQuery插件

来自分类Dev

如何在Vue CLI中使用CDN?

来自分类Dev

如何在Vue中使用儿童?

来自分类Dev

如何在Vue中使用localStorage?

来自分类Dev

如何在Vue中使用Bootstrap

来自分类Dev

如何在 vue 组件单文件中使用外部 script.js 中的变量

来自分类Dev

我如何在Vue JS中使用swiper.js

来自分类Dev

如何在 VUE.js 方法中使用函数中的参数调用函数?

来自分类Dev

如何在JavaScript中使用“ with”构造?

来自分类Dev

在 Vue 上,如何在另一个组件中使用一个组件中的函数?

来自分类常见问题

如何在vue.js中使用动态表格的rowpan?

来自分类Dev

如何在Vue.js中使用列表视图?

Related 相关文章

热门标签

归档