Vue组件全局注册实现警告框的实例详解


Posted in Javascript onJune 11, 2018

外部引入

<link href="https://cdn.bootcss.com/animate.css/3.5.2/animate.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script type="text/javascript" src="../js/vue-2.5.16.js"></script>

HTML部分

<div class="container">
   <!--动态数据绑定-->
   <my-info v-bind:data='msg' v-on:close='closeHandler'></my-info>
   <!--静态数据绑定-->
   <my-info data="操作有误"></my-info>
 </div>

script部分

<script type="text/javascript">
   Vue.component('my-info',{
   template:`
     <transition leave-active-class="animated fadeOutUpBig">
     <div
       v-show='isShow' 
       style="background:orange;
          color:#fff;
          padding:.5em 1em; 
          border-radius:5px; 
          margin:.5em 0; 
          position:relative">
       <i class="fa fa-info-circle"></i>
       <span>{{data}}</span>
       <i @click='close' class="fa fa-close" 
        style="position:absolute; 
           right: 1em;
           cursor:pointer"></i>
     </div>
     </transition>
     `,
     //注意:data必须是一个函数
     data(){
       return {
       isShow:true
       }
     },
     props:['data'],
     methods:{
       close(){
       //子组件向父组件发射事件
       this.$emit('close');
       //关闭消息框
       this.isShow = false;
       }
     },
   });
   new Vue({
     el:'.container',
     data:{
       msg:'添加失败!'
     },
     methods:{
       closeHandler(){
       console.log('关闭了');
       }
    }
  });
 </script>

效果

Vue组件全局注册实现警告框的实例详解

全局组件

组件的创建和注册分成3步:创建组件构造器,注册组件,挂载作用域内实例化

例如:

<div id="app">
  <!-- 3. #app是Vue实例挂载的元素,应该在挂载元素范围内使用组件-->
  <my-component></my-component>
</div>
<script>
  // 1.创建一个组件构造器
  var myComponent = Vue.extend({
    template: '<div>这是我的全局组件</div>'
  })
  
  // 2.注册组件,并指定组件的标签,组件的HTML标签为<my-component>
  Vue.component('my-component', myComponent)
  
  new Vue({
    el: '#app'
  });
</script>

我们来理解组件的创建和注册:

  1. Vue.extend()是Vue构造器的扩展,调用Vue.extend()创建的是一个组件构造器,而不是一个具体的组件实例。
  2. Vue.extend()构造器有一个选项对象,选项对象的template属性用于定义组件要渲染的HTML。
  3. 使用Vue.component()注册组件时,需要提供2个参数,第1个参数时组件的标签,第2个参数是组件构造器,也就是说
  4. Vue.component('标签名',Vue.extend())=>
  5. Vue.component('标签名', {template:' '})
  6. Vue.component()方法内部会调用组件构造器,创建一个组件实例。

全局组件必须写在Vue实例创建之前,才在该根元素下面生效

例如:

<div id="app">
   <!--该组件不会被渲染,并且报错-->
   <my-component></my-component>
 </div>
 <div id="app1">
   <my-component></my-component>
 </div>
 <script>
   new Vue({
     el: "#app"
   });
   Vue.component("my-component", {
     template: "<h1>这是我的全局组件</h1>"
   });
   new Vue({
    el: "#app1"
   })
 </script>

Prop传值

组件实例的作用域是孤立的,父组件可以通过props向下传递数据给子组件。

Prop静态传递数据

<div class="father"> 
  <child msg="hello!" data="yes!"></child> 
</div> 
Vue.component('child',{
  props:['msg',"data"],
  template:`<p>{{msg}}</p>
       <p>{{data}}</p>
       `
})

Prop动态传递数据

<div class="father"> 
  <child v-bind:msg="val"></child> 
</div> 
Vue.component('child',{
  props:["msg"],
  template:` <p>{{msg}}</p>`
})
new Vue({
  el:'.father,
  data:{
     val:'添加失败!'
  }
})

总结

以上所述是小编给大家介绍的Vue组件全局注册实现警告框的实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 变量作用域 代码分析
Jun 26 Javascript
通过正则格式化url查询字符串实现代码
Dec 28 Javascript
js形成页面的一种遮罩效果实例代码
Jan 04 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
May 16 Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 Javascript
es6的数字处理的方法(5个)
Mar 16 Javascript
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
vue实现商城秒杀倒计时功能
Dec 12 Javascript
vue父子组件间引用之$parent、$children
May 20 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 #jQuery
Node.js中的cluster模块深入解读
Jun 11 #Javascript
详解vue-router 初始化时做了什么
Jun 11 #Javascript
node中间层实现文件上传功能
Jun 11 #Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
Jun 11 #Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 #Javascript
实例详解Node.js 函数
Jun 10 #Javascript
You might like
聊天室php&amp;mysql(六)
2006/10/09 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP答题类应用接口实例
2015/02/09 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
python for 循环获取index索引的方法
2019/02/01 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
pymysql模块的操作实例
2019/12/17 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
创业计划书中包含的9个方面
2013/12/26 职场文书
财产保全担保书范文
2014/04/01 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
暑期社会实践证明书
2014/11/17 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers