在 vue 中使用 jquery ui 和时间选择器

Posted

技术标签:

【中文标题】在 vue 中使用 jquery ui 和时间选择器【英文标题】:Using jquery ui and time picker with vue 【发布时间】:2019-09-09 20:43:07 【问题描述】:

我正在尝试使用 jquery ui 设置 vue cli,但无法弄清楚如何使用 jquery ui 组件。我需要加载以下 js 文件

https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js
https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js
https://cdn.jsdelivr.net/jquery.ui.timepicker.addon/1.4.5/jquery-ui-timepicker-addon.min.js
https://cdn.jsdelivr.net/jquery.ui.timepicker.addon/1.4.5/jquery-ui-sliderAccess.js

和 css 文件

https://code.jquery.com/ui/1.10.0/themes/smoothness/jquery-ui.css
https://cdn.jsdelivr.net/jquery.ui.timepicker.addon/1.4.5/jquery-ui-timepicker-addon.min.css

使时间选择器工作。这是一个代码笔链接,我在其中测试了该功能。 https://codepen.io/cksachdev/pen/EJgGVR

关于我应该如何使用 vue-cli/webpack 配置加载这些的任何建议。

这是我迄今为止尝试过的:

 module: 
    loaders: [
       test: /\.css$/, loader: ['style-loader', 'css-loader'] ,
       test: /\.(jpe?g|png|gif)$/i, loader: 'file-loader' ,
    ],
  ,
  plugins: [
    // eslint-disable-next-line no-undef
    new webpack.ProvidePlugin(
      $: 'jquery',
      jquery: 'jquery',
      'window.jQuery': 'jquery',
      jQuery: 'jquery',
    ),
  ],
  resolve: 
    alias: 
      'jquery-ui': '../../../node_modules/jquery-ui/ui/widgets',
      'jquery-ui-css': '../../../node_modules/jquery-ui/../../themes/base',
    ,
  ,

【问题讨论】:

【参考方案1】:

编辑 2:我继续编写了一个演示项目,您可以镜像来完成此操作..

View the demo here

View the source code/repo here

同样,不确定您为什么要这样做,但 ^that^ 是(另一种)解决方案..




您可以将这些脚本和 css 文件添加到“index.html”文件(公共 -> index.html)中,并像这样使用它:

编辑 1: 非常重要的是要注意没有理由需要导入(相当大的)jQuery 甚至使用 jQuery。 Vue 生态系统有很多现有的选择来解决这样的问题。..

vue2-timepicker 和 Vuetify timepicker(Vuetify 更像是一个完整的预样式组件库)..

[CodePen mirror]

/* TIMEPICKER COMPONENT */
const VueTimepicker = 
  template: "#vue-timepicker",
  computed: 
    id() 
      // give the component a unique id/name
      return "time-picker-" + this._uid;
    
  ,
  mounted() 
    $("#" + this.id).timepicker(
      timeFormat: "HH:mm:ss:l"
    );
  
;

/* VUE APP */
new Vue(
  el: "#app",
  components: 
    VueTimepicker,
  
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.ui.timepicker.addon/1.4.5/jquery-ui-timepicker-addon.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.ui.timepicker.addon/1.4.5/jquery-ui-sliderAccess.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.10.0/themes/smoothness/jquery-ui.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.ui.timepicker.addon/1.4.5/jquery-ui-timepicker-addon.min.css" />

<!-- ******************** -->
<!-- VUE APP -->
<!-- ******************** -->
<div id="app">
  <div>
    <div>
      <span>Timepicker 1</span>
      <vue-timepicker/>
    </div>
    <div style="margin-top: 20px;">
      <span>Timepicker 2</span>
      <vue-timepicker/>
    </div>
  </div>
</div>

<!-- ******************** -->
<!-- TIMEPICKER COMPONENT -->
<!-- ******************** -->
<script type="text/x-template" id="vue-timepicker">
  <div>
    <input type="text" :name="id" :id="id" value=" ">
  </div>
</script>

【讨论】:

感谢您的回复。我正在寻找使用 vue-cli 的基于 webpack 的解决方案。 这将适用于 webpack 和 vue-cli。这就是 CodeSandbox 使用的。你的意思是你想使用 jQuery 作为一个模块而不是在 index.html 中导入? 是的,我想使用 webpack 导入 jQuery 和 jQuery ui。以下是我尝试过的,但加载 jQuery ui 图像失败。我尝试添加别名,但没有成功,并尝试手动复制粘贴图像文件夹,但没有运气。无法在此处粘贴,正在更新主要问题。 我试过codesandbox.io/s/o96mp85m86?fontsize=14链接,但我看不到时间选择器工作。 @ChetanSachdev 我继续为你写了一个演示。请查看我更新的答案 - 提供了一个演示站点,以及我将源代码存储在的 GitHub 存储库。

以上是关于在 vue 中使用 jquery ui 和时间选择器的主要内容,如果未能解决你的问题,请参考以下文章

vue颜色选择器el-color-picker的安装及使用

Quasar CLI VUE 实例

如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件

在vue中使用jquery

Vue.js + jQuery UI 可拖动

使用 element-ui 和 vue-test-utils 模拟选择