bootstrap-vue выбрать компоненты с параметрами фильтра?

В проекте vue с bootstrap-vue я ищу, как работает компонент select https://bootstrap-vue.js.org/docs/components/form-select/ и не видите, есть ли в нем какие-либо параметры фильтра? Если нет других компонентов / библиотек для выбора bootstrap-vue с параметрами фильтра?

"bootstrap-vue": "^2.1.0"
"vue": "^2.6.10"

Спасибо!


person Petro Gromovo    schedule 24.01.2020    source источник
comment
<b-form-select> - это просто "родной" <select> элемент браузера со стилем Bootstrap v4.x. Таким образом, он имеет те же ограничения, что и элемент <select>. вам нужно будет использовать <b-dropdown> и создать настраиваемый раскрывающийся список стиля выбора.   -  person Troy Morehouse    schedule 24.01.2020
comment
Я проверяю здесь bootstrap-vue.js.org/docs/components/dropdown и не вижу никаких параметров фильтра. Укажите, есть ли у него   -  person Petro Gromovo    schedule 25.01.2020


Ответы (2)


Есть вероятность. Используйте b-form-datalist. См. Пример в руководстве https://bootstrap-vue.org/docs/components/form-input

<template>
    <b-form-input list="my-list-id"></b-form-input>

    <datalist id="my-list-id">
        <option>Manual Option</option>
        <option v-for="size in sizes">{{ size }}</option>
    </datalist>
</template>

<script>
    export default {
      data() {
        return {
          sizes: ['Small', 'Medium', 'Large', 'Extra Large']
        }
      }
    }
</script>
person Alligator    schedule 21.06.2020
comment
Это отлично работает, если вы не хотите помещать пользовательские стили в раскрывающийся список. - person Imamudin Naseem; 22.06.2021

Я что-то построил для себя. Вот фрагменты кода на случай, если это поможет. Я использовал таблицу, потому что хотел показать дополнительные столбцы, но их можно было заменить на что-то еще, например, список диапазонов или кнопок.

<template>
    <div>
        <div>
            <b-form-input
                class='search-input'
                type='search'
                v-model='filterCriteria'
                v-on:click='toggleDropDown()'
                v-on:keyup.enter='selectItem()'
                :placeholder='placeholder'>
            </b-form-input>
        </div>
        <div>
            <b-collapse id='drop-down'>
                <b-table
                    no-border-collapse
                    ref='collapsibleTable'
                    responsive='sm'
                    selectable
                    select-mode='single'
                    sticky-header='200px'
                    thead-class='d-none'
                    v-model='filteredRows'
                    :fields='fields'
                    :filter='filterCriteria'
                    :items='items'
                    :sort-by.sync='sortBy'
                    :sort-desc.sync='sortDesc'
                    @row-selected='rowSelected'>
                </b-table>
            </b-collapse>
        </div>
    </div>
</template>

<script>

export default {
    data() {
        return {
            filterCriteria: '',
            filteredRows: []
        }
    },
    methods: {
        toggleDropDown() {
            this.$root.$emit('bv::toggle::collapse', 'drop-down')
        },
        selectItem() {
            if (this.filteredRows.length === 1) {
                this.$refs.collapsibleTable.selectRow(0)
            }
        },
        rowSelected(rowArray) {
            // No rows or 1 row can be selected
            if (rowArray.length === 1) {
                this.$emit('item-selected', rowArray[0])
                this.filterCriteria = rowArray[0][this.display]
                this.toggleDropDown()
            }
        }
    },
    props: {
        display: {
            required: true,
            type: String
        },
        fields: {
            required: true,
            type: Array
        },
        items: {
            required: true,
            type: Array
        },
        placeholder: {
            required: false,
            default: 'Select'
        },
        sortBy: {
            required: true,
            type: String
        },
        sortDec: {
            default: false,
            required: false
        }
    }
}
</script>
person RodP    schedule 05.06.2020
comment
Я понял, что в моем коде есть небольшая ошибка, когда вы используете один и тот же элемент более одного раза на странице / компоненте, потому что идентификатор коллапса жестко запрограммирован. Вы можете добавить этот код в метод connected () и присвоить коллапсу имя / ключ connected () {this.collapseKey = Math.floor (100000 + Math.random () * 900000)}, - person RodP; 11.06.2020