vue 自定義 select內(nèi)置組件
更新時間:2018年04月10日 11:35:05 作者:面條請不要欺負(fù)漢堡
這篇文章主要介紹了vue 自定義內(nèi)置組件 select的相關(guān)知識,整合了第三方j(luò)query 插件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.內(nèi)置組件
總結(jié)
以上所述是小編給大家介紹vue 自定義 select內(nèi)置組件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:
- vue內(nèi)置組件keep-alive事件動態(tài)緩存實例
- vue中keep-alive內(nèi)置組件緩存的實例代碼
- vue.js內(nèi)置組件之keep-alive組件使用
- vue內(nèi)置組件component--通過is屬性動態(tài)渲染組件操作
- vue內(nèi)置組件transition簡單原理圖文詳解(小結(jié))
- vue keep-alive的簡單總結(jié)
- vue緩存之keep-alive的理解和應(yīng)用詳解
- 解決Vue keep-alive 調(diào)用 $destory() 頁面不再被緩存的情況
- vue keep-alive實現(xiàn)多組件嵌套中個別組件存活不銷毀的操作
- vue使用keep-alive實現(xiàn)組件切換時保存原組件數(shù)據(jù)方法
- Vue 內(nèi)置組件keep-alive的使用示例
相關(guān)文章
Vue實現(xiàn)數(shù)據(jù)表格合并列rowspan效果
這篇文章主要為大家詳細介紹了Vue實現(xiàn)數(shù)據(jù)表格合并列rowspan效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07Ant Design Upload 文件上傳功能的實現(xiàn)
這篇文章主要介紹了Ant Design Upload 文件上傳功能的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04vue2.0使用Sortable.js實現(xiàn)的拖拽功能示例
本篇文章主要介紹了vue2.0使用Sortable.js實現(xiàn)的拖拽功能示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02如何用Vite構(gòu)建工具快速創(chuàng)建Vue項目
Vite是一個web開發(fā)構(gòu)建工具,由于其原生?ES?模塊導(dǎo)入方法,它允許快速提供代碼,下面這篇文章主要給大家介紹了關(guān)于如何用Vite構(gòu)建工具快速創(chuàng)建Vue項目的相關(guān)資料,需要的朋友可以參考下2022-05-05