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中void(0)的具体含义解释
Aug 02 Javascript
jquery select操作的日期联动实现代码
Dec 06 Javascript
js使用函数绑定技术改变事件处理程序的作用域
Dec 26 Javascript
JavaScript中setter和getter方法介绍
Jul 11 Javascript
js 自带的sort() 方法全面了解
Aug 16 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
Sep 18 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
小程序绑定用户方案优化小结
May 15 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 Javascript
layui默认选中table的CheckBox复选框方法
Sep 19 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中通过smtp发邮件的类,测试通过
2007/01/22 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
代码生成器 document.write()
2007/04/15 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
javascript实用方法总结
2015/02/06 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python内存读写操作示例
2018/07/18 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
解决python对齐错误的方法
2020/07/16 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
通信工程毕业生求职信
2013/11/16 职场文书
求职自荐书范文
2013/12/04 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
中餐厅主管的职责范文
2014/02/04 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
《海底世界》教学反思
2014/04/16 职场文书
大专学生求职自荐信
2014/07/06 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
售房委托书
2014/08/30 职场文书
国庆庆典邀请函
2015/02/02 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript