Vue组件全局注册实现警告框的实例详解
作者:ChinneJi 发布时间:2024-05-02 16:53:05
标签:vue,组件,警告框
外部引入
<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>
效果
全局组件
组件的创建和注册分成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>
我们来理解组件的创建和注册:
Vue.extend()是Vue构造器的扩展,调用Vue.extend()创建的是一个组件构造器,而不是一个具体的组件实例。
Vue.extend()构造器有一个选项对象,选项对象的template属性用于定义组件要渲染的HTML。
使用Vue.component()注册组件时,需要提供2个参数,第1个参数时组件的标签,第2个参数是组件构造器,也就是说
Vue.component('标签名',Vue.extend())=>
Vue.component('标签名', {template:' '})
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组件全局注册实现警告框的实例详解网站的支持!
来源:https://segmentfault.com/a/1190000015245779


猜你喜欢
- 使用File实现文件上传使用Form表单上传文件,fastapi使用File获取上传的文件。指定了参数类型是bytes:file: byte
- 介绍在本文中,我们将使用 OpenCV 库来开发 Python 文档扫描器。OpenCV 的简要概述: OpenCV 是一个开源库,用于各种
- 自从HTML5能为我们的新网页带来更高效洁净的代码而得到更多的关注,然而唯一能让IE识别那些新元素(如<article>)的途径
- 效果如下图:当点击问题时显示下面的回复内容。script type="text/javascript"> onlo
- Django中内置了邮件发送功能,被定义在django.core.mail模块中。发送邮件需要使用SMTP服务器,常用的免费服务器有:163
- 实例如下:# -*- coding: utf-8 -*-"""Spyder EditorThis tempor
- js一共有9种数据类型,分别是:未定义(undefined)、空(null)、布尔型(boolean)、字符串(string)、数值(num
- CSS浮动一直是个比较让人郁闷的问题,很多的布局问题都出在浮动上,特别是当浮动的列数很多时,但其实只要理解了两列结构的浮动,面对多列数的浮动
- 更新MySQL随意字段里的数据下面是我的mysql所有字段名若字段名太多不建议使用以下方法这里sql语句要注意一下双引号里面用单引号.def
- 本文实例讲述了php基于PDO实现功能强大的MYSQL封装类。分享给大家供大家参考,具体如下:class CPdo{ protected $
- 阅读上一篇:FrontPage2002简明教程四:网页超级链接 一、三种添加CSS的方式 在FrontPage 2002里可以通过三种方式给
- 对比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 Session 是以
- Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行操作!利用Python的多线程,只是利用CPU上下文切换的优势,
- 某天和一个产品经理聊起:以用户为中心是一个理想概念。经历了太多的项目,看到了太多的限制条件。而我向来不是一个有着设计洁癖的完美主义者。做为所
- 在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了。在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一
- 注:因为最近想用一下Python做一些简单小游戏的开发作为项目练手之用,而Pygame模块里面提供了大量的有用的方法和属性。今天我们就在之前
- 一,利用键盘响应,在不刷新本页面的情况下验证表单输入是否合法用户通过onkeydown和onkeyup事件来触发响应事件。使用方法和oncl
- 记录一些select的技巧: 1、select语句可以用回车分隔 $sql="select * from&nb
- [1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋
- 本文实例讲述了php测试kafka项目。分享给大家供大家参考,具体如下:概述Kafka是最初由Linkedin公司开发,是一个分布式、分区的