Vue.js 에서 select 드 롭 다운 목록 의 인 스 턴 스 를 만 듭 니 다(ul-li 탭 은 select 탭 을 모방 합 니 다)

대상:ul-li 태그 로 Vue.js 지식 을 결합 하여 select 태그 의 드 롭 다운 옵션 목록 을 만 듭 니 다.
지식 포인트:
구성 요소 의 쓰기 및 활용
구성 요소 간 데이터 전달(props 활용)
구성 요소 간 데이터 전달($emit 활용)
동적 데이터 바 인 딩(v-bind)
사용자 정의 이벤트 통신
효과 그림:
1.아무런 조작 도 하지 않 기 전에 드 롭 다운 목록 은 숨겨 진 상태 입 니 다.

2、입력 상 자 를 클릭 하여 드 롭 다운 목록 표시

3,목록 항목 을 클릭,입력 상자 값 에 따라 변경

PS:데이터 1,데이터 2 두 그룹의 데이터 연결 을 보 여주 기 위해 실례 에서 두 개의 목록 을 만 들 었 습 니 다

html 코드:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>ul-li  select    </title>
 <link rel="stylesheet" type="text/css" href="style.css" rel="external nofollow" />
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
 <div id="demo">
  <my-select btn-name='search' v-bind:list='data1' style='float: left;margin-right: 2rem;'></my-select>
  <my-select btn-name='  ' v-bind:list='data2' style='float: left;'></my-select>
 </div>
</body>
</html>
자 바스 크 립 트 코드

<script type="text/javascript">
//      
// my-select     ul-select  ,my-select    ul-select    
Vue.component('my-select', {
 //   data       
 data() {
  return {
   ulShow: false, //  ul   ,  input  ul     
   selectVal: '' //   ,input          
  }
 },
 //          props
 props: ['btnName', 'list'],
 template: `
  <div id="selectWrap">
   <div class="searchBox">
    <input type="text" :value="selectVal" @click='ulShow = !ulShow'/>
    <a href="#" rel="external nofollow" class="search" v-text='btnName'></a>
   </div>
    <my-ul v-show='ulShow' v-bind:list='list' v-on:receive='changeVal'></my-ul>
   </div>
 `,
 methods: {
  changeVal(value) {
   this.selectVal = value
  }
 }
})
//   
Vue.component('my-ul', {
 props: ['list'],
 template: `
  <ul class="skill">
   <li v-for='item of list' v-on:click='selectLi(item)'>{{item}}</li>
  </ul>
 `,
 methods: {
  selectLi: function(item) {
   //$emit              receive
   this.$emit('receive', item);
  }
 }
})
//  Vue  
new Vue({
 el: '#demo',
 //                li ,           
 data: {
  data1: ['CSS', 'HTML', 'JavaScript'],
  data2: ['Vue.js', 'Node.js', 'Sass'],
 }
})
</script>
CSS 스타일

ul, li {
 margin: 0;
 padding: 0;
 list-style: none;
}
#selectWrap {
 width: 250px;
 padding: 2rem;
 background: #4682b4;
}
.searchBox input, .searchBox a {
 line-height: 1.5rem;
 height: 1.5rem;
 margin-bottom: 1rem;
 padding: 0 5px;
 vertical-align: middle;
 border: 1px solid #aaa;
 border-radius: 5px;
 outline: none;
}
.searchBox a {
 display: inline-block;
 text-decoration: none;
 background-color: #b1d85c;
}
.skill li {
 font-size: 18px;
 line-height: 2rem;
 height: 2rem;
 padding-left: 5px;
 cursor: pointer;
}
.skill li:hover {
 background-color: #008b45;
}
위의 Vue.js 에서 select 드 롭 다운 목록 을 만 드 는 인 스 턴 스(ul-li 태그 모방 select 태그)는 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기