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 相关文章推荐
document对象execCommand的command参数介绍
Aug 01 Javascript
jquery插件 autoComboBox 下拉框
Dec 22 Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
Dec 17 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
Feb 13 Javascript
JS中字符串trim()使用示例
May 26 Javascript
AngularJS中使用HTML5手机摄像头拍照
Feb 22 Javascript
JavaScript排序算法动画演示效果的实现方法
Oct 18 Javascript
Node.js中流(stream)的使用方法示例
Jul 16 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
Jan 20 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 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中遍历stdclass object的实现代码
2011/06/09 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python 闭包的使用方法
2017/09/07 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
python FTP编程基础入门
2021/02/27 Python
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
Java语言程序设计测试题判断题部分
2013/01/06 面试题
销售顾问岗位职责
2014/02/25 职场文书
五年级下册复习计划
2015/01/19 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js