UNPKG

cloud-ui.vusion

Version:
222 lines (203 loc) 6.92 kB
# 多项选择框 MultiSelect ## 示例 ### 基本形式 ``` vue <template> <u-multi-select :data="options" v-model="value"></u-multi-select> </template> <script> export default { data() { return { value: [], options: [{ value: '选项1', text: '黄金糕' }, { value: '选项2', text: '双皮奶' }, { value: '选项3', text: '蚵仔煎' }, { value: '选项4', text: '龙须面' }, { value: '选项5', text: '北京烤鸭', }], }; }, watch: { value(newValue) { console.log(newValue); } } }; </script> ``` ### 过滤选项 ``` vue <template> <u-multi-select filter :data="options" v-model="value"></u-multi-select> </template> <script> export default { data() { return { value: [], options: [{ value: '选项1', text: '黄金糕' }, { value: '选项2', text: '双皮奶' }, { value: '选项3', text: '蚵仔煎' }, { value: '选项4', text: '龙须面' }, { value: '选项5', text: '北京烤鸭', }], }; } }; </script> ``` ### 自定义过滤方法 ``` vue <template> <u-multi-select filter :filter-method="filterMethod" :data="options" v-model="value" size="huge"></u-multi-select> </template> <script> export default { data() { return { value: [], options: [ { text: 'Alabama', value: 'Alabama' }, { text: 'Alaska', value: 'Alaska' }, { text: 'Arizona', value: 'Arizona' }, { text: 'Arkansas', value: 'Arkansas' }, { text: 'California', value: 'California' }, { text: 'Colorado', value: 'Colorado' }, { text: 'Connecticut', value: 'Connecticut' }, { text: 'Delaware', value: 'Delaware' }, { text: 'Florida', value: 'Florida' }, { text: 'Georgia', value: 'Georgia' }, { text: 'Hawaii', value: 'Hawaii' }, { text: 'Idaho', value: 'Idaho' }, { text: 'Illinois', value: 'Illinois' }, ], }; }, watch: { value(newValue) { console.log(newValue); } }, methods: { filterMethod(data,query) { const tdata = data.filter((item) => { if(item.value.toLowerCase().indexOf(query.toLowerCase()) > -1) return item; else return false; }); return tdata; } } }; </script> ``` ### 大小扩展 ``` vue <template> <u-linear-layout direction="vertical"> <u-linear-layout> <u-multi-select :data="options" filter placeholder="small" :value="[]" size="small"></u-multi-select> <u-multi-select :data="options" filter placeholder="small normal" :value="[]" size="small normal"></u-multi-select> <u-multi-select :data="options" filter placeholder="small large" :value="[]" size="small large"></u-multi-select> </u-linear-layout> <u-linear-layout> <u-multi-select :data="options" filter placeholder="normal small" :value="[]" size="normal small"></u-multi-select> <u-multi-select :data="options" filter placeholder="normal" :value="[]" size="normal"></u-multi-select> <u-multi-select :data="options" filter placeholder="normal large" :value="[]" size="normal large"></u-multi-select> </u-linear-layout> <u-linear-layout> <u-multi-select :data="options" filter placeholder="large small" :value="[]" size="large small"></u-multi-select> <u-multi-select :data="options" filter placeholder="large normal" :value="[]" size="large normal"></u-multi-select> <u-multi-select :data="options" filter placeholder="large" :value="[]" size="large"></u-multi-select> </u-linear-layout> <u-linear-layout> <u-multi-select :data="options" filter placeholder="huge small" :value="[]" size="huge small"></u-multi-select> <u-multi-select :data="options" filter placeholder="huge normal" :value="[]" size="huge normal"></u-multi-select> <u-multi-select :data="options" filter placeholder="huge large" :value="[]" size="huge large"></u-multi-select> </u-linear-layout> <u-linear-layout> <u-multi-select :data="options" filter placeholder="large" :value="[]" size="large"></u-multi-select> </u-linear-layout> <u-linear-layout> <u-multi-select :data="options" filter placeholder="huge" :value="[]" size="huge"></u-multi-select> </u-linear-layout> </u-linear-layout> </template> <script> export default { data() { return { options: [{ value: '选项1', text: '黄金糕' }, { value: '选项2', text: '双皮奶' }, { value: '选项3', text: '蚵仔煎' }, { value: '选项4', text: '龙须面' }, { value: '选项5', text: '北京烤鸭', }], }; } }; </script> ``` ## MultiSelect API ### Attrs/Props | Attr/Prop | Type | Default | Description | | --------- | ---- | ------- | ----------- | | data | Array\<{ text, value }\> | | Data书写方式中的数据列表 | | value.sync, v-model | Array | | 当前选择的值 | | field | String | `'text'` | 显示文本字段 | | readonly | Boolean | `false` | 是否只读 | | disabled | Boolean | `false` | 是否禁用 | | size | String | `normal normal` | 控制宽高属性,第一个值表示高度属性,第二值表示宽度,值有`small`,`normal`,`large`,`huge` 四个值可以互相组合 | | filter | Boolean | `false` | 支持输入,搜索匹配项 | | filter-method | Function || 自定义输入搜索的方法 | | placeholder | String | `'请选择'` | 默认展示的文字,在`filter=true`时生效 | ### Events #### @select 选择某一项前触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event.selected | Object | 选择项对象 | | $event.value | Any | 选择项的值 | #### @close 点击选中项的关闭图标 | Param | Type | Description | | ----- | ---- | ----------- | | $event.index | Number | 点击选择项的索引 | | $event.value | Array | 选择项的值 | #### @toggle 选择项展示和隐藏触发函数 | Param | Type | Description | | ----- | ---- | ----------- | | $event.open | Boolean | 值表示展示还是隐藏 |