【IMWeb训练营作业】之select练习总结

今天完成的是自定义下拉框,涉及组件,组件注册、组件间通信,关于组件间通信,老师有张ppt感觉挺好,如下图:


完成效果图如下:

LICEcap截图

页面代码:

<html>
	<head>
		<title>vue练习之select</title>
		<meta charset="utf-8">
		<link rel="stylesheet" type="text/css" href="./select.css" />
		<script type="text/javascript" src="../vue.js"></script>
	</head>
<body>
	<div id="app">
		<div class="left">
			<h2>自定义下拉框</h2>
			<custom-select btn-value="查询" v-bind:list="list1"></custom-select>
		</div>
		<div class="left">
			<h2>自定义下拉框2</h2>
			<custom-select btn-value="搜索" v-bind:list="list2"></custom-select>
		</div>
	</div>
	<script type="text/javascript">
		//注册组件 全局
		Vue.component("custom-select",{
			data:function(){
				return {
							selectShow:false,
							val:"",
						}
			},
			props:["btnValue","list"],
			template:`<section class="warp">
						<div class="searchIpt clearFix">
							<div class="clearFix">
								<input type="text" class="keyWord" @click="selectShow=!selectShow" :value="val" />
								<input type="button" class="search" :value="btnValue" />
								<span></span>
							</div>
							<custom-list 
								v-show="selectShow" 
								:list="list"
								@receive="changeValueHandle"
							></custom-list>
						</div>
					</section>`,
			methods:{
				changeValueHandle(value){
					this.val = value;
				}
			}
		})
		Vue.component("custom-list",{
			props:["list"],
			template:`<ul class="list">
							<li v-for="item of list" @click="selectVuleHandle(item)">{{item}}</li>
						</ul>`,
			methods:{
				selectVuleHandle:function(item){
					//告知父级,改变val的值,需要触发自定义事件
					this.$emit("receive",item);
				},
			}
		})
		var data = {
			list1:["北京","天津","河北"],
			list2:["11","22","33","44"]
		}
		new Vue({
			el:"#app",
			data:data,
		})
	</script>
</body>
</html>
源码地址: GitHub


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值