IMWeb训练营——select组件

说到组件,首先要明确的一点就是组件是web页面中的一部分,今天的一个主题就是进行组件化开发。整个是以selec为例的。做出来的效果图如下:

1.打开页面,最开始出现的是这样一个简单的查询框

2.把鼠标放在输入框上会有下拉选项出现:

3.点击下面列表中的内容,输入框也会相应的出现相同的内容:

其中主要的代码如下:

		<div id="app">
			
				<custom-select btn-value="查询" v-bind:list="list1"></custom-select>
					
		</div>
		
		<script>
			
			//注册组建
			Vue.component("custom-select",{
				data:function(){
					return {
						selectShow:false,
						val:"",
					};
				},
				props:["btnValue","list"],
				template:`<section  class ="warp">
						<div class="searchIpt">
							<div class="clearFix">
								<input type="text" class="keyWord" :value="val" @click="selectShow=!selectShow" />
								<input type="button" class="go" v-bind:value="btnValue"/>
								<span></span>
							</div>
							<custom-list 
								v-show="selectShow" 
								:list="list"
								v-on: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="selectValueHandler(item)">{{item}}</li>
							</ul>`,
				methods:{
					selectValueHandler:function(item){
						//在子组件中有交互
						//告知父级,val改变的值,需要触发一个自定义事件
						
						this.$emit("receive",item);
					}
				}
			})
			
			var data = {
				list1:["四川","重庆","湖南"]
			}
			new Vue({
				el:"#app",
				data:data,
				
			});
		</script>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值