使用组件来渲染图片切换

62 篇文章 1 订阅
5 篇文章 0 订阅
<div id="box">
			<h2 @click="bool=true">猫</h2>
			<h2 @click="bool=false">狗</h2>
			<com-cat :cats = 'cat' v-show='bool==true'></com-cat>
			<com-dog :dogs = 'dog' v-show='bool==false'></com-dog>
			<!-- <div v-for="item in cat" v-show='bool==true'>
				<img :src='item.img'/>
				<span @click='title=item.title'>{{item.title}}</span>
			</div> -->
			<!-- <div v-show='bool==false' v-for="item in dog" >
				<img :src='item.img'/>
				<span @click='title=item.title'>{{item.title}}</span>
			</div> -->
			<!-- //标题 -->
			<h1>{{title}}</h1>
		</div>
//猫的组件
		let ComCat = {
			template:`<div>
			<div v-for="item in cats">
				<img :src='item.img'/>
				<span @click='show(item.title)'>{{item.title}}</span>
			</div>
			</div>
			`,
			props:['cats'],
			methods:{
				show(title){
					this.$parent.show(title)
				}
			}
		}
		//狗的组件
		let ComDog={
			template:`<div><div v-for="item in dogs">
				<img :src='item.img'/>
				<span @click='show(item.title)'>{{item.title}}</span>
			</div></div>`,
			props:['dogs'],
			methods:{
				show(title){
					this.$parent.show(title)
				}
			}
		}
		new Vue({
			el: "#box",
			methods:{
				show(titele){
					this.title = titele;
				}
			},
			components:{
				ComCat,
				ComDog
			},
			data: {
				title:"未选中",
				bool:true,
				cat: [{
					img: '作业/imgs/cat1.jpg',
					title: 'cat1'
				}, {
					img: '作业/imgs/cat2.jpg',
					title: 'cat2'
				}],
				dog: [{
					img: '作业/imgs/dog1.jpg',
					title: 'dog1'
				}, {
					img: '作业/imgs/dog2.jpg',
					title: 'dog2'
				}]
			}
		})

1.局部注册:
        a.vue实例中注册的组件叫局部组件(组件私有只能在当前实例中使用)
        b.局部注册的data是一个函数,如果是对象得话,那么组件之间的数据会相互影响,而声明的函数会形成闭包域(return)
        ,数据之间会起到隔离数据的作用
    2.全局注册:
        a.在实例外注册的组件叫全局组件(可被其他实例使用)
        b.Vue.component(“自定义组件名”,组件对象)

1.父组件给子组件传值:props是专门用来接收父组件传递过来的值(数组,对象),接收的属性可以当做data数据进行使用

2.子组件给父组件传值:$emit()自定义事件(此事件由父组件来触发),参数1是自定义的事件名,参数2表示需要传的数据

3.插槽传值
        a.插槽<slot></slot>
        b.当父组件需要传递标签的时候可以使用插槽来传值,先把需要传递的父组件标签定义在自定义自建标签中,
        再到子组件模板中使用slot标签,如果父组件中有多个标签,则需要先给标签取类名,然后把要传递的名字
        写在模板slot中,就可以做到传递指定的标签

效果图如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值