iview---自定義下拉框

這是演示自定義下拉框,僅僅是打開想要實現自定義下拉框的網友思路。重要事說三遍:僅僅是演示,僅僅是演示,僅僅是演示。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>
相關文章
相關標籤/搜索