Vue.JS & Semantic-UI 模态

Posted

技术标签:

【中文标题】Vue.JS & Semantic-UI 模态【英文标题】:Vue.JS & Semanti-UI modal 【发布时间】:2017-11-13 01:48:14 【问题描述】:

在我的一个 vue 组件中,我有一个按钮应该打开 Semantic-UI modal,如下所示:

模板:

<template>
<div>
 ...
 <button type="button" @click="openModal()"> Open </button>
 <div class="ui modal" id="confirmMod">
    <i class="close icon"></i>
    <div class="header">
      Modal Title
    </div>
    <div class="image content">
      <div class="image">
        An image can appear on left or an icon
      </div>
      <div class="description">
        A description can appear on the right
      </div>
    </div>
    <div class="actions">
      <div class="ui button">Cancel</div>
      <div class="ui button">OK</div>
    </div>
  </div>
 </div>
</div>
</template>

脚本:

<script>
  export default 
    ...
    methods: 
      openModal() 
        $('#confirmMod').modal('show')
      
    
  
</script>

但是,当我单击按钮打开模式时,控制台中会显示此错误:

Uncaught TypeError: $(...).modal is not a function

我在 html 和 webpack 中都添加了 jquery(我使用 vue-cli 来初始化 vue webpack 样板)。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

找到解决方案。对于那些有此问题的人,请执行以下操作:

1) 在你的 webpack 配置文件中添加 jQuery 作为插件:

plugins: [
    ...
    // JQUERY plugin
    new webpack.ProvidePlugin(
      $: "jquery",
      jQuery: "jquery",
      "window.jQuery": "jquery"
    ),
    ...
]

2) 在 main.js(用于初始化 Vue 应用程序的文件)顶部添加语义 ui css/js:

import '../static/semantic/dist/semantic.css'
import '../static/semantic/dist/semantic.js'
import Vue from 'vue'
import App from './App'
...

3) 像在 jquery 中一样调用模态:$('.ui.modal').modal()

我希望这会有所帮助。

【讨论】:

以上是关于Vue.JS & Semantic-UI 模态的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js路由管理器 Vue Router

在 Vue.js 中创建自定义组件

django & Vue.js:为啥我的 VueJs 组件没有显示在前端?

前端框架大比拼:Angularjs && Reactjs && Vue.js

semantic-ui前端UI框架

如何用Express.js & Vue.js 创建一个用比特币支付的在线商店!