图例中筛选是另外一个组件
一般在筛选的场景中需要使用下拉菜单,动态设置筛选条件,比如淘宝,京东的产品筛选列表,携程的旅游目的地的筛选列表。
wxml模板
<view class="container">
<ui-list list="{{tabConfig}}" />
</view>
复制代码
js
const Pager = require('../../components/aotoo/core/index')
const mkDropdown = require('../../components/modules/dropdown')
Pager({
data: {
tabConfig: mkDropdown({
id: 'xxx',
data: [
{title: '选项-1'},
{title: '选项-2'},
{title: '选项-3'},
{title: '选项-3'},
],
tap(data, index){
if (index === 0) {
this.updateContent({ ...checkListConfig }) // 配置弹层内容
let title = this.getTitle()
}
}
}),
},
})
复制代码
updateContent更新的结构是一次性的,即再次打开时,实例维持不变,如果需要强制刷新,指定第二参数为true
id
{String}
指定实例名称,在page中可通过this[id]找到实例
data
{Array}
配置下拉菜单的列表,组件自动生成器对应的弹层
tap
{Function}
下拉菜单项点击时的响应事件
data数组展示下拉菜单的所有菜单项,每一项必须为Object类型的数据,每一项数据可自定义,支持图片,文字,图片组,文字组等等
菜单项由item组件构成,因此可以支持非常丰富的结构用于展示
{img: 'path/to/imgsrc'}
复制代码
{title: '文字标题'}
复制代码
{title: '文字标题', img: 'path/to/imgsrc'}
// 更改图文顺序只需要把属性位置倒置
{img: 'path/to/imgsrc', title: '文字标题'}
复制代码
// 文字组
{title: ['文字标题-1', '文字标题-2']}
// 图片组
{img: [{src: 'path/to/imgsrc'}, {src: 'path/to/imgsrc'}]}
复制代码
同时也支持图组,文字组混排,根据需求
当指定id后,便可以在page页中,方便的获取下拉菜单的实例,调用实例方法
注意Pager和Page的区别,Page是微信小程序原生方法,Pager是对Page的二次封装,Pager支持原生Page的所有属性、方法,但反过来则不能支持
mkDropdown({ id: 'xxx' })
// 获取实例
Pager({
onReady(){
const instance = this['xxx']
console.log(instance)
}
})
复制代码
通过tap响应方法支持,设置弹出内容和菜单项标题
tap方法的上下文(context)环境
updateContent
{Function} 更新菜单项弹出层内容
updateTitle
{Function}
更新菜单项标题
getTitle
{Function}
获取当前菜单项标题
mkDropdown({
id: 'xxx',
data: [...],
tap(data, index){ // data为菜单项数据,index为菜单项位置
if (index === 0) { // 菜单栏第一项
this.updateTitle() // 更新标题
// this.updateContent() 更新内容
}
}
})
复制代码
下列配置,会在弹出框中渲染列表结构
this.updateContent({
"@list": {
data: [
{title: '1'},
{title: '2'},
]
}
})
复制代码
下列配置,会在弹出框中渲染列表结构
this.updateContent({
"@form": {
data: [
{title: '表单区域1', input: [...]},
{title: '表单区域2', input: [...]},
]
}
})
复制代码
下列配置,会在弹出框中渲染列表结构
this.updateContent({
"@list": mkChecklist({
...
})
})
复制代码