最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Vue 使用js来调用一个组件

    正文概述 掘金(西西是个菜鸟)   2021-01-25   539

    在引用第三方库的时候,一般都会有通过js来显示一个正确提示或者错误提示的弹窗,如果开发的项目里要有自己独特的风格,可以自己实现一个。

    首先,有一个弹窗的组件库(这里就简单写一下,只有报错的)

    <template>
     <div v-if="isDialog" class="dialog">
       <div class="content">
         <div class="content-inset">
           <img @click="isDialog=false" class="close" src="@/assets/dialog_close_icon.png" >
           <div class="content-inset-text color-3A1">
             <img src="@/assets/remind_icon.png" >
             <span class="font-size-16">{{ text }}</span>
           </div>
           <div @click="isDialog=false" class="content-inset-bottom">
             <img src="@/assets/confirm_icon.png" >
           </div>
         </div>
    
       </div>
     </div>
    </template>
    <script>
    export default {
     data () {
       return {
         isDialog: false,
         text: ''
       }
     },
     methods: {
       show (text) {
         this.text = text
         this.isDialog = true
       },
       hide () {
         this.text = ''
         this.isDialog = false
       }
     }
    }
    </script>
    <style lang="scss" scoped>
    .dialog{
       .content{
       width: 272px;
       height: 144px;
       background: #fff;
       padding: 2px;
       border-radius: 5px;
       margin-top: 115px;
       .content-inset{
         border: 2px solid #B77F29;
         position: relative;
         width: 100%;
         height: 100%;
         box-sizing: border-box;
         display: flex;
         flex-direction: column;
         justify-content: space-between;
         border-radius: 5px;
         box-shadow: 0 0 4px #ECCDA5 inset;
         background: #FFD98D;
         .close{
           width: 24px;
           height: 24px;
           position: absolute;
           right: 6px;
           top: 6px;
         }
         .content-inset-text{
             display: flex;
             margin: 32px 16px 16px;
             img{
                 width: 24px;
                 height: 24px;
                 margin-right: 8px;
             }
             span{
               flex: 1;
             }
    
         }
         .content-inset-bottom{
           display: flex;
           justify-content: center;
           img{
             width: 80px;
             height: 50px;
           }
         }
       }
     }
    }
    </style>
    
    

    然后将这个组件库放到Vue里面,新建一个index.js

    // instance.js
    
    import Vue from 'vue'
    import ErrorMsg from './index.vue'
    
    const MsgConstructor = Vue.extend(ErrorMsg)
    
    const instance = new MsgConstructor()
    
    instance.$mount()
    
    document.body.appendChild(instance.$el)
    
    export default instance
    
    

    在main.js里面引用

    import ErrorMsg from '@/components/errorDialog/instance'
    Vue.prototype.$errorMsg = instance
    

    下面有两种情况,一种是Vue组件里面引用,一种是js文件引用

    Vue组件使用

    this.$errorMsg.show('我错了')
    

    js使用

    import ErrorMsg from '@/components/errorDialog/instance'
    ErrorMsg.show('我错了')
    

    起源地下载网 » Vue 使用js来调用一个组件

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元