uni-app 需要一个自定义下拉框的组件

uni-app 需要一个自定义下拉框的组件

下拉框里的内容我可以自己放组件进去 正常的下拉框是无法自己放组件进去展示出来

2 回复

只是写一个不就行了吗

更多关于uni-app 需要一个自定义下拉框的组件的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中创建一个自定义下拉框组件,可以通过组合使用<view><scroll-view><picker>等组件来实现。以下是一个简单的自定义下拉框组件的示例代码,包括组件的创建和使用。

自定义下拉框组件 (MyDropdown.vue)

<template>
  <view class="dropdown">
    <view class="selected-text" @tap="toggleDropdown">{{selectedText}}</view>
    <view class="dropdown-menu" v-if="isVisible">
      <scroll-view scroll-y="true" style="height: 150px;">
        <view v-for="(item, index) in options" :key="index" class="dropdown-item" @tap="selectItem(index)">
          {{item}}
        </view>
      </scroll-view>
    </view>
  </view>
</template>

<script>
export default {
  props: {
    options: {
      type: Array,
      required: true
    },
    initialValue: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      selectedText: this.initialValue,
      isVisible: false
    };
  },
  methods: {
    toggleDropdown() {
      this.isVisible = !this.isVisible;
    },
    selectItem(index) {
      this.selectedText = this.options[index];
      this.isVisible = false;
      this.$emit('change', this.selectedText);
    }
  },
  mounted() {
    if (!this.selectedText && this.options.length > 0) {
      this.selectedText = this.options[0];
    }
  }
};
</script>

<style scoped>
.dropdown {
  position: relative;
  width: 100%;
}
.selected-text {
  padding: 10px;
  border: 1px solid #ccc;
  background-color: #fff;
  cursor: pointer;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  border: 1px solid #ccc;
  background-color: #fff;
  z-index: 1000;
}
.dropdown-item {
  padding: 10px;
  cursor: pointer;
}
.dropdown-item:hover {
  background-color: #f0f0f0;
}
</style>

使用自定义下拉框组件 (App.vue)

<template>
  <view>
    <MyDropdown :options="options" @change="handleChange" />
  </view>
</template>

<script>
import MyDropdown from './components/MyDropdown.vue';

export default {
  components: {
    MyDropdown
  },
  data() {
    return {
      options: ['Option 1', 'Option 2', 'Option 3']
    };
  },
  methods: {
    handleChange(value) {
      console.log('Selected:', value);
    }
  }
};
</script>

以上代码展示了如何创建一个简单的自定义下拉框组件,并在父组件中使用它。MyDropdown组件接收一个options数组作为下拉选项,并通过change事件将选中的值传递给父组件。样式部分可以根据实际需求进行调整。

回到顶部