平台兼容性
项目说明
本项目是基于uni-app的一个通用组件。可支持小程序,也支持APP。 组件名称为“标签组件”,通过属性设置可支持只读标签,也支持可编辑标签
组件功能说明:
- 输入文字,点添加,可新建一个标签
- 可同时输入多个标签,以逗号相隔
- 标签新建后自动添加到后面
- 标签上自带删除图标,点击可删除
- 删除图标可配置显示/隐藏
- 标签背景色可配置内置的5种颜色
- 标签可点击触发事件
- 标签删除时可触发删除事件
- 添加区域可配置显示/隐藏
- 可获取当前标签的数据列表
历史版本说明
版本号 | 更新日期 | 更新说明 |
---|---|---|
v1.0 | 2019-4-14 | 功能参考上面“组件功能说明” |
v1.1 | 2019-4-17 | 1.移除tagData属性 2.增加v-model支持 3.增加value属性 |
v1.2 | 2019-4-17 | 优化数据双向绑定的参数:某种情况下初始化的数据不能显示 |
使用说明
拷贝该组件到components目录下之后
在 script
中引用组件
import robbyTags from '@/components/robby-tags/robby-tags.vue'
export default {
components: {robbyTags}
}
在 template
中使用组件:
<robby-tags :value="tagList"></robby-tags>
<robby-tags v-model="tagList" @add="addTag" @delete="delTag" :enable-del="enableDel" :enable-add="enableAdd"></robby-tags>
双向绑定说明
v-model: 类型为字符串数组。 即标签数组,可用于初始化,当添加/删除操作时,绑定的数据都会同步更新
属性说明
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
enable-del | Boolean | false | 删除图标是否可见,即是否可删除 |
enable-add | Boolean | false | 添加标签操作是否可见,即是否可进行添加标签 |
bg-color-type | String | '' | 标签的背景颜色,默认为灰色,另外可取值有四种,与uni自带的颜色保持一致,分别为:primary, success, warn, error |
value | Array<String> | [] | 初始化标签数据,可用于单向数据初始化,需要双向绑定可直接用v-model |
事件说明
事件名称 | 说明 | 返回参数 |
---|---|---|
add | 点击”添加“按钮后触发的事件,返回参数为当前操作添加的标签数组和当前所有的标签数组 | {currentTag:Array |
delete | 点击“x”删除图标后触发的事件,返回参数为当前删除的标签字符串 | {currentTag:String,allTags: |
click | 点击标签文字触发的事件,返回参数为当前点击的标签字符串 | String |
demo示例
<template>
<view class="uni-common-mt">
<view class="uni-label">
为作品贴标签
</view>
<robby-tags v-model="tagList" @add="addTag" @delete="delTag" @click="clickTag" :enable-del="enableDel" :enable-add="enableAdd"></robby-tags>
<view :key="index" v-for="(tag,index) in tagList">
{{index}}. {{tag}}
</view>
</view>
</template>
<script>
import robbyTags from '@/components/robby-tags/robby-tags.vue'
export default {
data() {
return {
enableDel: true,
enableAdd: true,
colorType: 'primary',
tagList: ['建筑','动漫','艺术']
}
},
methods:{
clickTag: function(e){
console.log(e)
},
delTag: function(e){
console.log(e)
},
addTag: function(e){
console.log(e)
}
}
}
</script>