vue 自定义 select内置组件
程序员文章站
2023-10-18 11:12:15
1.整合了第三方 jquery 插件 (select2)
1.整合了第三方 jquery 插件 (select2)
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="js/select2/select2.min.css" /> <style> html, body { font: 13px/18px sans-serif; } select { min-width: 300px; } </style> </head> <body> <div id="el"> <p>选中的: {{ selected }}</p> <select2 :options="options" v-model="selected"></select2> </div> <script src="js/jquery-2.1.4.min.js"></script> <script src="js/select2/select2.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/vue/2.1.3/vue.js"></script> <script> vue.component('select2', { props: ['options', 'value'], template: '<select><slot></slot></select>', mounted: function () { var vm = this;// init select2 $(this.$el).select2({ data: this.options }).val(this.value).trigger('change').on('change', function () { // emit event on change. vm.$emit('input', this.value) }) }, watch: { value: function (value) { // update value $(this.$el).val(value).trigger('change') }, options: function (options) { // update options $(this.$el).empty().select2({ data: options }) } }, destroyed: function () { $(this.$el).off().select2('destroy') } }) var vm = new vue({ el: '#el', data: { selected: 2, options: [ { id: 0, text: '苹果' }, { id: 1, text: '香蕉' }, { id: 2, text: '香梨' }, { id: 3, text: '榴莲' }, { id: 4, text: '西瓜' } ] } }) </script> </body> </html>
2.简单select
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <style> *{ padding: 0; margin: 0; } ul,li { list-style: none; } li { line-height: 2em; } li:hover { background-color: #f9f9f9; border-radius:5px; cursor: pointer; } input{ cursor:pointer; outline:none; } #app { margin-top: 20px; } #app h2 { text-align: center; } .wrap { background-color: rgba(56, 170, 214, 0.45); border-radius: 20px; width: 300px; margin: 40px; padding: 20px; } input[type="button"] { font-size:14px; margin-left:2px; padding:2px 5px; background-color:rgb(228, 33, 33); color:white; border:1px solid rgb(228, 33, 33); border-radius:5px; } .clearfix { padding-left: } input.keyword { border: 1px solid #777777; border-radius: 10px; height: 30px; width: 80%; padding-left: 10px; font-size: 16px; } ul.list { margin: 20px 0; } ul.list li { padding: 10px 0 0 10px; } </style> </head> <body> <div id="app"> <div style="float: left;"> <h2>自定义下拉框</h2> <custom-select btn-value="查询" v-bind:list="list1"></custom-select> </div> <div style="float: left;"> <h2>自定义下拉框2</h2> <custom-select btn-value="搜索" v-bind:list="list2"></custom-select> </div> </div> <div id="app1"> <custom-select></custom-select> </div> <script src="http://cdnjs.cloudflare.com/ajax/libs/vue/2.1.3/vue.js"></script> <script> vue.component("custom-select",{ data(){ return { selectshow:false, val:"" } }, props:["btnvalue","list"], template:`<section class="wrap"> <div class="searchipt clearfix"> <div class="clearfix"> <input type="text" class="keyword" :value="val" @click="selectshow = !selectshow" /> <input type="button" :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 in list" @click="selectvaluehandle(item)">{{item}} </li> </ul>`, methods:{ selectvaluehandle:function(item){ this.$emit("receive",item) } } }) new vue({ el:"#app", data:{ list1:['北京','上海','广州','杭州'], list2:['17-01-11','17-02-11','17-03-11','17-04-11'], } }) </script> </body> </html>
参考:
1.内置组件
总结
以上所述是小编给大家介绍vue 自定义 select内置组件,希望对大家有所帮助
上一篇: 如何写好一篇有吸引力的软文
下一篇: 最详细的微信公众号推广方案