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 相关文章推荐
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
Jun 29 Javascript
JS中表单的使用小结
Jan 11 Javascript
jQuery设置指定网页元素宽度和高度的方法
Mar 25 Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 Javascript
详解百度百科目录导航树小插件
Jan 08 Javascript
JS实现购物车特效
Feb 02 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
Sep 28 Javascript
基于vue的换肤功能的示例代码
Oct 10 Javascript
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
js实现简单抽奖功能
Nov 24 Javascript
关于vue-router-link选择样式设置
Apr 30 Vue.js
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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
PHP中的串行化变量和序列化对象
2006/09/05 PHP
php判断变量类型常用方法
2012/04/24 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
常用jQuery代码分享
2015/07/14 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
javascript实现文字无缝滚动效果
2017/08/26 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
详解JS预解析原理
2020/06/16 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
python 编程之twisted详解及简单实例
2017/01/28 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
奥巴马竞选演讲稿
2014/05/15 职场文书
工作目标责任书
2014/07/23 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
技术员个人工作总结
2015/03/03 职场文书
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js
python实现学生信息管理系统(面向对象)
2022/06/05 Python