使用vue组件包装jquery插件[通俗易懂]

使用vue组件包装jquery插件[通俗易懂]在同一套UI中,通常我们不提倡vue和jquery插件结合使用,但在项目重构中,我们没时间重写vue组件,想重用特定功能的jquery插件,这个时候就需要将jquery插件包装一下成vue组件。 v-once指令用于在组件具有大量静态内容的情况下缓存组件。这实际上使组件选择退出…

使用vue组件包装jquery插件"

使用vue组件包装jquery插件

  • 在同一套UI中,通常我们不提倡vue和jquery插件结合使用,但在项目重构中,我们没时间重写vue组件,想重用特定功能的jquery插件,这个时候就需要将jquery插件包装一下成vue组件。

jquery日期插件包装成一个vue组件

1 使用vue组件包装jquery插件有以下好处

  • 利用vue的生命周期的钩子函数初始化及卸载插件
  • 通过props和event与Vue应用程序的其她组件进行通信
  • 组件可以使用v-once选择退出更新
<!--jquery日期组件的使用-->
Date: <input id="datepicker"/>
$('#datepicker').datepicker();

<!--使用vue包装-->
Vue.component('date-picker', function() {
  template: '<input/>'
});

new Vue({
  el: '#app'
});

<div id="app">
  Date: <date-picker></date-picker>
</div>
  • 实例化组件
<!--this.$el是因为组件根节点是input-->
Vue.component('date-picker', function() {
  template: '<input/>',
  mounted: function() {
    $(this.$el).datepicker();
  }
});
  • 销毁组件
Vue.component('date-picker', {
  template: '<input/>',
  mounted: function() {
    $(this.$el).datepicker();
  },
  beforeDestroy: function() {
    $(this.$el).datepicker('hide').datepicker('destroy');
  }
});
  • 使用props传递配置
Vue.component('date-picker', {
  template: '<input/>',
  props: [ 'dateFormat' ],
  mounted: function() {
    $(this.$el).datepicker({
      dateFormat: this.dateFormat
    });
  },
  beforeDestroy: function() { ... }
});

<div id="app"> <date-picker date-format="yy-mm-dd"></date-picker> </div>
  • v-onc
  • v-once指令用于在组件具有大量静态内容的情况下缓存组件。这实际上使组件选择退出更新。
  • 这非常适合在我们的插件组件上使用,因为它会有效地使Vue忽略它。jQuery将在应用程序的生命周期中对这个元素进行无阻碍的控制。
<div id="app">
  <date-picker date-format="yy-mm-dd" v-once></date-picker>
</div>
  • 将数据从jQuery传递到Vue
<!--根实例一个日期属性-->
new Vue({
  el: '#app',
  data: {
    date: null
  }
});
<div id="app">
  <date-picker date-format="yy-mm-dd" v-once></date-picker>
  <p>{{ date }}</p>
</div>

<!--子组件添加$emit触发事件-->
mounted: function() {
  var self = this;
  $(this.$el).datepicker({
    dateFormat: this.dateFormat,
    onSelect: function(date) {
      self.$emit('update-date', date);
    }
  });
}

<!--根实例date-picker组件绑定update-date事件-->
<div id="app">
  <date-picker @update-date="updateDate" date-format="yy-mm-dd" v-once></date-picker>
  <p>{{ date }}</p>
</div>

new Vue({
  el: '#app',
  data: {
    date: null
  },
  methods: {
    updateDate: function(date) {
      this.date = date;
    }
  }
});

参考链接

  • vue和jquery安全使用
  • demo示例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13911.html

(0)

相关推荐

  • 跑批是什么意思啊_pjsk保底

    跑批是什么意思啊_pjsk保底摘要:SPL实现了更优算法,性能远远超过存储过程,能显著提高单机计算效率,非常适合跑批计算。 本文分享自华为云社区《Java开源专业计算引擎:跑批真的这么难吗?》,作者: Java李杨勇。 业务系统产

    2023-06-02
    151
  • 学习Anaconda的完整教程

    学习Anaconda的完整教程在Python编程领域,Anaconda是一种广受欢迎的开发环境,具有许多强大的功能和特性。Anaconda是一个用于Python和R语言的开源发行版,包含了许多常用的科学计算和数据科学模块。Anaconda还包含了一个包管理器,可以方便地下载和更新包。此外,Anaconda的另一个重要特点是能够创建独立的Python环境,这样就可以在同一计算机上运行不同版本的Python,而不会相互干扰。

    2024-05-22
    66
  • ceph报错_RocksDB

    ceph报错_RocksDBrocksdb数据库发生异常导致mon进程无法拉起。

    2023-04-04
    160
  • 【MySQL】笔记(4)-[亲测有效]

    【MySQL】笔记(4)-[亲测有效]8.7、索引的实现原理:通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率是

    2023-05-01
    129
  • MySQL 数据库优化,看这篇就够了

    MySQL 数据库优化,看这篇就够了数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1、优化一览…

    2023-03-26
    155
  • Elasticsearch 7.x 最详细安装及配置

    Elasticsearch 7.x 最详细安装及配置Elasticsearch7.x最详细安装及配置一、Elasticsearch7.x小马哥说过,学习技术栈得看版本,那么Elasticsearch7.x有什么好的特性呢?ES7.0是2019年4月份发

    2023-08-19
    117
  • excel控件的使用教程_控件的使用

    excel控件的使用教程_控件的使用本想全面了解一下所有控件的使用方法,度娘后没看到太有价值的帖子。于是决定把自己的心得详细的写下来,希望对大家可用之处。

    2023-06-25
    137
  • tomcat7基于Memcached配置session共享踩坑实录[通俗易懂]

    tomcat7基于Memcached配置session共享踩坑实录[通俗易懂]那么,就直入主题了,本文就对tomcat7整合memcached会话共享做一次总结。原料首先需要准备一份全新未开封的tomcat,这里用到的版本是apache-tomcat-7.0.90。然后我们需要

    2023-07-19
    130

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注