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 面向对象全新理练之继承与多态
Dec 03 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
Apr 02 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
Apr 06 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
浅谈对于react-thunk中间件的简单理解
May 01 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
python获取网页状态码示例
2014/03/30 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python处理大日志文件
2019/07/23 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
幼儿园父亲节活动方案
2014/03/11 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
英语教师求职信范文
2015/03/20 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
mysq启动失败问题及场景分析
2021/07/15 MySQL
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS