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 TextArea动态显示剩余字符
Oct 22 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
Jan 07 Javascript
node.js中的console.trace方法使用说明
Dec 09 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
Feb 21 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
JavaScript中常见的八个陷阱总结
Jun 28 Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 Javascript
用js实现before和after伪类的样式修改的示例代码
Sep 07 Javascript
代码详解JS操作剪贴板
Feb 11 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 jQuery
js如何验证密码强度
Mar 18 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
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP自定义多进制的方法
2016/11/03 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
Vue.js数据绑定之data属性
2017/07/07 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
python静态方法实例
2015/01/14 Python
Python3遍历目录树实现方法
2015/05/22 Python
python下MySQLdb用法实例分析
2015/06/08 Python
python结合API实现即时天气信息
2016/01/19 Python
Python中random模块生成随机数详解
2016/03/10 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
Django 外键的使用方法详解
2019/07/19 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
一些PHP的面试题
2015/05/06 面试题
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
职业技术学校毕业生推荐信
2013/12/03 职场文书
网吧消防安全制度
2014/01/28 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
五好家庭申报材料
2014/12/20 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS