這是演示自定義下拉框,僅僅是打開想要實現自定義下拉框的網友思路。重要事說三遍:僅僅是演示,僅僅是演示,僅僅是演示。html
fselect.vuevue
<template> <div class="Fs-main" > <Dropdown trigger="custom" :visible="visible" :placement="optionsData.placement" style="left:0px;width: 100%" > <Input v-model="row.contract_no" type="text" icon="md-arrow-dropdown" @on-click="onDropdown"/> <Icon type="ios-search" slot="prefix" /> </Input> <DropdownMenu slot="list" > <DropdownItem>驢打滾 {{options.bb}}</DropdownItem> <DropdownItem>炸醬麪</DropdownItem> <DropdownItem disabled>豆汁兒</DropdownItem> <DropdownItem>冰糖葫蘆</DropdownItem> <DropdownItem divided>北京烤鴨</DropdownItem> </DropdownMenu> </Dropdown> </div> </template> <script> export default { name: "f-select", props:["options"], created(){ this.optionsData=this.options; }, data(){ return{ modelName:"f-select", optionsData:{}, visible:false, dropdownClass:"Dropdown", row:{ contract_no:"" } } }, methods:{ onClick(){ this.classStyle="Fs-root-show" }, onDropdown(){ console.log(this.modelName + " show(target) is begin"); if (!this.currentVisible) { this.visible=true; }else { this.visible=false; } this.$refs.reference=this.optionsData.target; this.currentVisible=!this.currentVisible; }, show(target){ console.log(this.modelName + " show(target) is begin"); if (!this.currentVisible) { this.visible=true; }else { this.visible=false; } this.$refs.reference=target; this.currentVisible=!this.currentVisible; } } } </script> <style lang="less" > .Fs-main{ width: 200px; position: relative; Dropdown{ left:0; width: 100%; } } </style>
測試:ios
<template> <Form ref="crud-two-update-form" class="fselect-test-root" :label-width="100" > <!--<div class="fselect-test-content" @click="onClick">--> <div class="fselect-test-content" ref="contract_no_select"> <FormItem label="合同編號" class="span2col" ref="" > <FSelect ref="contract_no_select" :options="fselectOptions" ></FSelect> </FormItem> </div> </Form> </template> <script> import FSelect from "@/views/dc-general/fselect.vue" export default { name: "fselect-test", components: {//引入vue組件文件後,還須要在這裏定義,才能正常使用 FSelect }, data() {//組件實例的屬性定義區,也可定義方法 return { modelName: "fselect-test",//模塊名稱,重點供日誌輸出 定位用 row:{ myfield1:"" }, fselectOptions:{ placement:"bottom", target:this.$refs["contract_no_select"], aa:"helloaa", bb:"bb2" } } }, methods: { onClick() { console.log(this.modelName + " onClick begin "); this.$refs.contract_no_select.show(event.target); } } } </script> <style > .fselect-test-root{ width:100%; height:100vh; /*background: #2b85e4;*/ } </style>