Bootstrap

小程序下拉筛选加重置

大部分列表场景中都需要进行列表筛选,所以需要把下拉做成一个component组件进行选用。

下面是效果图(不是很美观)
在这里插入图片描述

项目目录结构如下:

在这里插入图片描述

代码如下(代码有点多,但是复制就能运行)

dropdownmenu.js


Component({
   
  properties: {
   
    dropDownMenuTitle: {
   
      type: Array,
      value: [],
    },
    dropDownMenuDistrictData: {
   
      type:Array,
      value:[]
    },
   
    dropDownMenuSourceData: {
   
      type: Array,
      value: []
    },
  },
  data: {
   
    // private properity
    district_open: false, // 区域
    source_open: false, // 来源
    shownavindex: '',
    dropDownMenuDistrictDataRight: {
   },
    selected_district_id: 0,
    selected_district_name: '',
    selected_source_id: 0,
    selected_source_name:''
  },
  methods: {
   
    
    tapDistrictNav: function (e) {
   
      if (this.data.district_open) {
   
        this.setData({
   
          district_open: false,
          source_open: false,
          shownavindex: 0
        })
      } else {
   
        this.setData({
   
          district_open: true,
          source_open: false,
          shownavindex: e.currentTarget.dataset.nav
        })
      }

    },
    tapSourceNav: function (e) {
   
      if (this.data.source_open) {
   
        this.setData({
   
          source_open: false,
          district_open: false,
          shownavindex: 0
        })
      } else {
   
        this.setData({
   
          source_open: true,
          district_open: false,
          shownavindex: e.currentTarget.dataset.nav
        })
      }
    },
  
    selectDistrictItem: function (e) {
   
      var selectedId = e.target.dataset.model.id
      var selectedTitle = e.target.dataset.model.title;
      var selectedValue = e.target.dataset.model.value;
      this.closeHyFilter();
      this.setData({
   
        selected_district_id: selectedId,
        selected_district_name: selectedTitle
      })
      this.triggerEvent("selectedItem", {
    index: this.data.shownavindex, selectedId: selectedId, selectedTitle: selectedTitle, selectedValue: selectedValue})
    },

    selectSourceItem: function (e) {
   
      var selectedId = e.target.dataset.model.id
      var selectedTitle = e.target.dataset.model.title;
      var selectedValue = e.target.dataset.model.value;
      this.closeHyFilter();
      this.setData({
   
        selected_source_id: selectedId,
        selected_source_name:selectedTitle
      })
      this.triggerEvent("selectedItem", {
    index: this.data.shownavindex, selectedId: selectedId, selectedTitle: selectedTitle, selectedValue: selectedValue })
    },

    
    /**关闭筛选 */
    closeHyFilter: function () {
   
      if (this.data.district_open) {
   
        this.setData({
   
          district_open: false,
          source_open: false,
        })
      } else if (this.data.source_open) {
   
        this.setData({
   
          source_open: false,
          style_open: false,
        })
      }
    },
    // 重置
    reset:function(){
   
      this.setData({
   
        selected_district_i:0,
        selected_district_name:'',
        selected_source_id:0,
        selected_source_name:''
      })
      this.triggerEvent("reset")
    },
   
  },
  //组件生命周期函数,在组件实例进入页面节点树时执行
  attached: function () {
   
    
    
  },

})

dropdownmenu.json

{
   
  "component&
;