如何在 vue.js 应用程序中使用 jQuery 脚本?

Posted

技术标签:

【中文标题】如何在 vue.js 应用程序中使用 jQuery 脚本?【英文标题】:How to use jQuery script inside vue.js app? 【发布时间】:2019-04-24 04:48:36 【问题描述】:

如何在 vue.js 应用中使用 jQuery 脚本?

var app = new Vue( 
    el: '#app',
    data: 
        users: ['my_date': '']
    
);

<div id="app">
    <input class="form-control pickadate" v-model="user.my_date" placeholder="My Date">
</div>

我像这样运行 jQuery 脚本,但是当我将 .pickadate 类添加到我的输入时,它没有反应并且 datepicker 没有出现:

$('.pickadate').pickadate(
    max: Date.now(),
    format: "yyyy-mm-dd"
);

【问题讨论】:

你是如何包含 jquery 的? 【参考方案1】:

您需要挂钩 Vue 的生命周期挂钩(mountedbeforeDestroy)。然后,您可以使用this.$el 访问组件的根元素。这是一个例子:

<template>
    <div>
        <input class="form-control pickadate" v-model="user.my_date" placeholder="My Date">
    </div>
</template>

<script>
export default 
    data: 
        users: ['my_date': '']
    ,
    mounted() 
        $('.pickadate', this.$el).pickadate(
            max: Date.now(),
            format: "yyyy-mm-dd"
        );
    ,
    beforeDestroy() 
        // remove pickadate according to its API
    
;
</script>

有关 Vue 的生命周期钩子,请参阅官方文档:https://vuejs.org/v2/guide/instance.html#Lifecycle-Diagram

【讨论】:

【参考方案2】:

同样,我需要在 Vue 组件中运行自定义的 jQuery 扩展脚本,以重用一些非常复杂的功能(用 es5 编写)。搜索并尝试了很多,最后以下解决方案救了我:

    mounted () 
        const script0 = document.createElement('script')
        script0.setAttribute(
          'src',
          'https://xxx/jquery-2.2.4.min.js'
        )
        script0.async = true
        document.head.appendChild(script0)

        const script1 = document.createElement('script')
        script1.setAttribute(
          'src',
          'https://yyy/jquery.kdzzz.js'
        )
        script1.async = true
        document.head.appendChild(script1)
    ,
    methods: 
        methodA () 
          window.$.extfunctionA()   // the extended function is defined in the jquery.kdzzz.js
        ...
        
    

【讨论】:

以上是关于如何在 vue.js 应用程序中使用 jQuery 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在vue js中包含jquery库以及如何调用? [复制]

如何编写一个 Vue JS 内嵌组件

怎样在Vue.js中使用jquery插件

怎样在Vue.js中使用jquery插件

怎样在Vue.js中使用jquery插件

如何在 Vue.js 方法中使用 jquery 访问表数据