這是演示自定義下拉框,僅僅是打開想要實現自定義下拉框的網友思路。重要事說三遍:僅僅是演示,僅僅是演示,僅僅是演示。
fselect.vue
<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>
測試:
<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>
