Tag标签 - 图1

标签 Tag

进行标记和分类的小标签。

何时使用

  • 用于标记事物的属性和维度。
  • 进行分类。

代码演示

Tag标签 - 图2

基本用法

基本标签的用法,可以通过添加 closable 变为可关闭标签。可关闭标签具有 close 两个事件。

  1. <template>
  2. <div>
  3. <a-tag>Tag 1</a-tag>
  4. <a-tag><a href="https://github.com/vueComponent/ant-design">Link</a></a-tag>
  5. <a-tag closable @close="log">
  6. Tag 2
  7. </a-tag>
  8. <a-tag closable @close="preventDefault">
  9. Prevent Default
  10. </a-tag>
  11. </div>
  12. </template>
  13. <script>
  14. export default {
  15. methods: {
  16. log(e) {
  17. console.log(e);
  18. },
  19. preventDefault(e) {
  20. e.preventDefault();
  21. console.log('Clicked! But prevent default.');
  22. },
  23. },
  24. };
  25. </script>

Tag标签 - 图3

多彩标签

我们添加了多种预设色彩的标签样式,用作不同场景使用。如果预设值不能满足你的需求,可以设置为具体的色值。

  1. <template>
  2. <div>
  3. <h4 style="margin-bottom: 16px">
  4. Presets:
  5. </h4>
  6. <div>
  7. <a-tag color="pink">
  8. pink
  9. </a-tag>
  10. <a-tag color="red">
  11. red
  12. </a-tag>
  13. <a-tag color="orange">
  14. orange
  15. </a-tag>
  16. <a-tag color="green">
  17. green
  18. </a-tag>
  19. <a-tag color="cyan">
  20. cyan
  21. </a-tag>
  22. <a-tag color="blue">
  23. blue
  24. </a-tag>
  25. <a-tag color="purple">
  26. purple
  27. </a-tag>
  28. </div>
  29. <h4 style="margin: '16px 0'">
  30. Custom:
  31. </h4>
  32. <div>
  33. <a-tag color="#f50">
  34. #f50
  35. </a-tag>
  36. <a-tag color="#2db7f5">
  37. #2db7f5
  38. </a-tag>
  39. <a-tag color="#87d068">
  40. #87d068
  41. </a-tag>
  42. <a-tag color="#108ee9">
  43. #108ee9
  44. </a-tag>
  45. </div>
  46. </div>
  47. </template>

Tag标签 - 图4

热门标签

选择你感兴趣的话题。

  1. <template>
  2. <div>
  3. <span :style="{ marginRight: 8 }">Categories:</span>
  4. <template v-for="tag in tags">
  5. <a-checkable-tag
  6. :key="tag"
  7. :checked="selectedTags.indexOf(tag) > -1"
  8. @change="checked => handleChange(tag, checked)"
  9. >
  10. {{ tag }}
  11. </a-checkable-tag>
  12. </template>
  13. </div>
  14. </template>
  15. <script>
  16. export default {
  17. data() {
  18. return {
  19. checked1: false,
  20. checked2: false,
  21. checked3: false,
  22. tags: ['Movies', 'Books', 'Music', 'Sports'],
  23. selectedTags: [],
  24. };
  25. },
  26. methods: {
  27. handleChange(tag, checked) {
  28. const { selectedTags } = this;
  29. const nextSelectedTags = checked
  30. ? [...selectedTags, tag]
  31. : selectedTags.filter(t => t !== tag);
  32. console.log('You are interested in: ', nextSelectedTags);
  33. this.selectedTags = nextSelectedTags;
  34. },
  35. },
  36. };
  37. </script>

Tag标签 - 图5

可选择

可通过 CheckableTag 实现类似 Checkbox 的效果,点击切换选中效果。

该组件为完全受控组件,不支持非受控用法。

  1. <template>
  2. <div>
  3. <a-checkable-tag v-model="checked1" @change="handleChange">
  4. Tag1
  5. </a-checkable-tag>
  6. <a-checkable-tag v-model="checked2" @change="handleChange">
  7. Tag2
  8. </a-checkable-tag>
  9. <a-checkable-tag v-model="checked3" @change="handleChange">
  10. Tag3
  11. </a-checkable-tag>
  12. </div>
  13. </template>
  14. <script>
  15. export default {
  16. data() {
  17. return {
  18. checked1: false,
  19. checked2: false,
  20. checked3: false,
  21. };
  22. },
  23. methods: {
  24. handleChange(checked) {
  25. console.log(checked);
  26. },
  27. },
  28. };
  29. </script>

Tag标签 - 图6

动态添加和删除

用数组生成一组标签,可以动态添加和删除。

  1. <template>
  2. <div>
  3. <template v-for="(tag, index) in tags">
  4. <a-tooltip v-if="tag.length > 20" :key="tag" :title="tag">
  5. <a-tag :key="tag" :closable="index !== 0" @close="() => handleClose(tag)">
  6. {{ `${tag.slice(0, 20)}...` }}
  7. </a-tag>
  8. </a-tooltip>
  9. <a-tag v-else :key="tag" :closable="index !== 0" @close="() => handleClose(tag)">
  10. {{ tag }}
  11. </a-tag>
  12. </template>
  13. <a-input
  14. v-if="inputVisible"
  15. ref="input"
  16. type="text"
  17. size="small"
  18. :style="{ width: '78px' }"
  19. :value="inputValue"
  20. @change="handleInputChange"
  21. @blur="handleInputConfirm"
  22. @keyup.enter="handleInputConfirm"
  23. />
  24. <a-tag v-else style="background: #fff; borderStyle: dashed;" @click="showInput">
  25. <a-icon type="plus" /> New Tag
  26. </a-tag>
  27. </div>
  28. </template>
  29. <script>
  30. export default {
  31. data() {
  32. return {
  33. tags: ['Unremovable', 'Tag 2', 'Tag 3Tag 3Tag 3Tag 3Tag 3Tag 3Tag 3'],
  34. inputVisible: false,
  35. inputValue: '',
  36. };
  37. },
  38. methods: {
  39. handleClose(removedTag) {
  40. const tags = this.tags.filter(tag => tag !== removedTag);
  41. console.log(tags);
  42. this.tags = tags;
  43. },
  44. showInput() {
  45. this.inputVisible = true;
  46. this.$nextTick(function() {
  47. this.$refs.input.focus();
  48. });
  49. },
  50. handleInputChange(e) {
  51. this.inputValue = e.target.value;
  52. },
  53. handleInputConfirm() {
  54. const inputValue = this.inputValue;
  55. let tags = this.tags;
  56. if (inputValue && tags.indexOf(inputValue) === -1) {
  57. tags = [...tags, inputValue];
  58. }
  59. console.log(tags);
  60. Object.assign(this, {
  61. tags,
  62. inputVisible: false,
  63. inputValue: '',
  64. });
  65. },
  66. },
  67. };
  68. </script>

Tag标签 - 图7

控制关闭状态

通过 visible 属性控制关闭状态。

  1. <template>
  2. <div>
  3. <a-tag v-model="visible" closable>
  4. Movies
  5. </a-tag>
  6. <br />
  7. <a-button size="small" @click="visible = !visible">
  8. Toggle
  9. </a-button>
  10. </div>
  11. </template>
  12. <script>
  13. export default {
  14. data() {
  15. return {
  16. visible: true,
  17. };
  18. },
  19. };
  20. </script>

API

Tag

参数说明类型默认值
afterClose关闭动画完成后的回调,请使用 close 事件, 我们将在下个版本删除此项() => void-
afterClose关闭动画完成后的回调() => void-
closable标签是否可以关闭booleanfalse
color标签色string-
visible(v-model)是否显示标签booleantrue

事件

事件名称说明回调参数
close关闭时的回调(e) => void

Tag.CheckableTag

参数说明类型默认值
checked(v-model)设置标签的选中状态booleanfalse

事件

事件名称说明回调参数
change点击标签时触发的回调(checked) => void