Cette fois, je vais vous montrer comment imiter la balise select de la balise ul-li de Vue.js, et quelles sont les précautions pour sélectionner la balise ul-li de Vue.js. Ce qui suit est un cas pratique, jetons un coup d'oeil.
Objectif : utiliser la balise ul-li combinée aux connaissances de Vue.js pour créer une liste d'options déroulantes qui imite la balise select.
Points de connaissances :
Comment écrire et utiliser des composants
Transfert de données entre composants (utilisation d'accessoires)
Transfert de données entre composants (utilisation de $emit)
Liaison de données dynamique (v-bind)
Communication événementielle personnalisée
Rendu :
1. Avant toute opération, la liste déroulante est masquée
2. Cliquez sur la zone de saisie pour afficher la liste déroulante
3. Cliquez sur l'élément de la liste et la valeur de la zone de saisie changera en conséquence
PS : Afin de démontrer la liaison de deux ensembles de données, data1 et data2, deux listes
sont créées dans l'exemple. code 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> <p 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> </p> </body> </html>
Code JavaScript
<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: ` <p id="selectWrap"> <p class="searchBox"> <input type="text" :value="selectVal" @click='ulShow = !ulShow'/> <a href="#" rel="external nofollow" class="search" v-text='btnName'></a> </p> <my-ul v-show='ulShow' v-bind:list='list' v-on:receive='changeVal'></my-ul> </p> `, 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>
Style 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; }
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour un contenu plus passionnant, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
AjaxUpLoad.js pour le téléchargement de fichiers
Comment utiliser le composant carrousel de Vue
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!