bootstrap-vue select 具有过滤选项的组件?
bootstrap-vue select components with filter options?
在带有 bootstrap-vue 的 vue 项目中,我搜索了 select 组件的工作原理
https://bootstrap-vue.js.org/docs/components/form-select/
并且没有看到它有任何过滤器选项吗?
如果没有,是否有其他一些 bootstrap-vue select components/libraries 带有过滤器选项?
"bootstrap-vue": "^2.1.0"
"vue": "^2.6.10"
谢谢!
我为自己建造了一些东西。以下是代码片段,以备不时之需。我使用 table 是因为我想显示额外的列,但它可以换成其他内容,例如跨度列表或按钮。
<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>
有这个可能。
使用 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>
你应该试试Vue Select
您希望 HTML 元素可以做的所有事情,都包含在一个轻量级、零依赖、可扩展的 Vue 组件中。
Vue Select 是一个功能丰富的 select/dropdown/typeahead 组件。它为可过滤的 select 下拉列表提供了适合大多数用例的默认模板。该组件旨在尽可能轻量级,同时在可访问性、开发人员体验和自定义方面保持高标准。
- 标记过滤/搜索
- Vuex 支持
- AJAX支持
- SSR 支持
- 可访问 ~20kb 总计 / ~5kb CSS / ~15kb JS
- Select Single/Multiple
- 可使用插槽和 SCSS 变量自定义的选项
- 零依赖
在带有 bootstrap-vue 的 vue 项目中,我搜索了 select 组件的工作原理 https://bootstrap-vue.js.org/docs/components/form-select/ 并且没有看到它有任何过滤器选项吗? 如果没有,是否有其他一些 bootstrap-vue select components/libraries 带有过滤器选项?
"bootstrap-vue": "^2.1.0"
"vue": "^2.6.10"
谢谢!
我为自己建造了一些东西。以下是代码片段,以备不时之需。我使用 table 是因为我想显示额外的列,但它可以换成其他内容,例如跨度列表或按钮。
<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>
有这个可能。 使用 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>
你应该试试Vue Select 您希望 HTML 元素可以做的所有事情,都包含在一个轻量级、零依赖、可扩展的 Vue 组件中。
Vue Select 是一个功能丰富的 select/dropdown/typeahead 组件。它为可过滤的 select 下拉列表提供了适合大多数用例的默认模板。该组件旨在尽可能轻量级,同时在可访问性、开发人员体验和自定义方面保持高标准。
- 标记过滤/搜索
- Vuex 支持
- AJAX支持
- SSR 支持
- 可访问 ~20kb 总计 / ~5kb CSS / ~15kb JS
- Select Single/Multiple
- 可使用插槽和 SCSS 变量自定义的选项
- 零依赖