【问题标题】:OverFlow on form tags表单标签溢出
【发布时间】:2020-05-22 17:25:41
【问题描述】:

所以我正在使用 bootstrap-vue,而正是我正在使用 Form-tag,因为它正是我所需要的。问题是下拉列表与选项列表一样长。 这就是我的意思: Tag button & 这 Dropdown 我真正想要的是一个类似的css来溢出:滚动,但我似乎无法让它工作。 这是代码:

<template>
  <div>
    <b-form-group label="Tagged input using dropdown">
      <b-form-tags v-model="value" no-outer-focus class="mb-2">
        <template v-slot="{ tags, disabled, addTag, removeTag }">
          <ul v-if="tags.length > 0" class="list-inline d-inline-block mb-2">
            <li v-for="tag in tags" :key="tag" class="list-inline-item">
              <b-form-tag
                @remove="removeTag(tag)"
                :title="tag"
                :disabled="disabled"
                variant="info"
              >{{ tag }}</b-form-tag>
            </li>
          </ul>

          <b-dropdown size="sm" variant="outline-secondary" block menu-class="w-100">
            <template v-slot:button-content>
              <b-icon icon="tag-fill"></b-icon> Choose tags
            </template>
            <b-dropdown-form @submit.stop.prevent="() => {}">
              <b-form-group
                label-for="tag-search-input"
                label="Search tags"
                label-cols-md="auto"
                class="mb-0"
                label-size="sm"
                :description="searchDesc"
                :disabled="disabled"
              >
                <b-form-input
                  v-model="search"
                  id="tag-search-input"
                  type="search"
                  size="sm"
                  autocomplete="off"
                 ></b-form-input>
              </b-form-group>
            </b-dropdown-form>
            <b-dropdown-divider></b-dropdown-divider>
            <b-dropdown-item-button
              v-for="option in availableOptions"
              :key="option"
              @click="onOptionClick({ option, addTag })"
            >
              {{ option }}
            </b-dropdown-item-button>
            <b-dropdown-text v-if="availableOptions.length === 0">
              There are no tags available to select
            </b-dropdown-text>
          </b-dropdown>
        </template>
      </b-form-tags>
    </b-form-group>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        options: ['Apple', 'Orange', 'Banana', 'Lime', 'Peach', 'Chocolate', 'Strawberry'],
        search: '',
        value: []
      }
    },
    computed: {
      criteria() {
        // Compute the search criteria
        return this.search.trim().toLowerCase()
      },
      availableOptions() {
        const criteria = this.criteria
        // Filter out already selected options
        const options = this.options.filter(opt => this.value.indexOf(opt) === -1)
        if (criteria) {
          // Show only options that match criteria
          return options.filter(opt => opt.toLowerCase().indexOf(criteria) > -1);
        }
        // Show all options available
        return options
      },
      searchDesc() {
        if (this.criteria && this.availableOptions.length === 0) {
          return 'There are no tags matching your search criteria'
        }
        return ''
      }
    },
    methods: {
      onOptionClick({ option, addTag }) {
        addTag(option)
        this.search = ''
      }
    }
  }
</script>

如果你能帮我...谢谢

【问题讨论】:

    标签: css bootstrap-4 bootstrap-vue


    【解决方案1】:

    好吧,我通过添加一个带有以下 css 的 div 来做到这一点

    #test{
       max-height:500px;
       overflow:auto; 
    }
    

    如果有人需要,这里是代码:

    <template>
      <div>
        <b-form-group label="Tagged input using dropdown">
          <b-form-tags v-model="value" no-outer-focus class="mb-2">
            <template v-slot="{ tags, disabled, addTag, removeTag }">
              <ul v-if="tags.length > 0" class="list-inline d-inline-block mb-2">
                <li v-for="tag in tags" :key="tag" class="list-inline-item">
                  <b-form-tag
                    @remove="removeTag(tag)"
                    :title="tag"
                    :disabled="disabled"
                    variant="info"
                  >{{ tag }}</b-form-tag>
                </li>
              </ul>
    
              <b-dropdown size="sm" variant="outline-secondary" block menu-class="w-100">
                <template v-slot:button-content>
                  <b-icon icon="tag-fill"></b-icon> Choose tags
                </template>
               <div id="test">
                <b-dropdown-form @submit.stop.prevent="() => {}">
                  <b-form-group
                    label-for="tag-search-input"
                    label="Search tags"
                    label-cols-md="auto"
                    class="mb-0"
                    label-size="sm"
                    :description="searchDesc"
                    :disabled="disabled"
                  >
                    <b-form-input
                      v-model="search"
                      id="tag-search-input"
                      type="search"
                      size="sm"
                      autocomplete="off"
                     ></b-form-input>
                  </b-form-group>
                </b-dropdown-form>
                <b-dropdown-divider></b-dropdown-divider>
                <b-dropdown-item-button
                  v-for="option in availableOptions"
                  :key="option"
                  @click="onOptionClick({ option, addTag })"
                >
                  {{ option }}
                </b-dropdown-item-button>
                <b-dropdown-text v-if="availableOptions.length === 0">
                  There are no tags available to select
                </b-dropdown-text>
              </div>
              </b-dropdown>
            </template>
          </b-form-tags>
        </b-form-group>
      </div>
    </template>
    
    <script>
      export default {
        data() {
          return {
            options: ['Apple', 'Orange', 'Banana', 'Lime', 'Peach', 'Chocolate', 'Strawberry'],
            search: '',
            value: []
          }
        },
        computed: {
          criteria() {
            // Compute the search criteria
            return this.search.trim().toLowerCase()
          },
          availableOptions() {
            const criteria = this.criteria
            // Filter out already selected options
            const options = this.options.filter(opt => this.value.indexOf(opt) === -1)
            if (criteria) {
              // Show only options that match criteria
              return options.filter(opt => opt.toLowerCase().indexOf(criteria) > -1);
            }
            // Show all options available
            return options
          },
          searchDesc() {
            if (this.criteria && this.availableOptions.length === 0) {
              return 'There are no tags matching your search criteria'
            }
            return ''
          }
        },
        methods: {
          onOptionClick({ option, addTag }) {
            addTag(option)
            this.search = ''
          }
        }
      }
    </script>
    

    【讨论】:

      猜你喜欢
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      相关资源
      最近更新 更多