这次给大家带来vue做出可搜索下拉框,vue做出可搜索下拉框的注意事项有哪些,下面就是实战案例,一起来看一下。
实践加深对vue的理解和运用有效途径,本文是基于vue的可搜索下拉框定制组件实现,在此记录.
二、组件代码
dropdown.vue
@keyup='search($event)' :placeholder="placeholder" />
-
:key="index">
{
{item.name}}
{
{nodatatext}}
export default {
data(){
return {
_datalist:this.itemlist.concat(),
datalist:this.itemlist.concat(),
length:this.itemlist.length
props:{
'show':{//用于外部控制组件的显示/隐藏
type:Boolean,
default:true
'itemlist':Array,
'placeholder':String,
'nodatatext':String
directives:{
'show-extend':function(el,binding,vnode){//bind和 update钩子
let value = binding.value,searchInput = null;
if(value){
el.style.display='block';
}else{//隐藏后,恢复初始状态
el.style.display='none';
searchInput = el.querySelector(".search-text");
searchInput.value = '';
vnode.context.datalist = vnode.context.itemlist;//还原渲染数据
methods:{
appClick:function(data){
this.$emit('item-click',data);
search:function(e){
let vm = this,searchvalue = e.currentTarget.value;
vm.datalist = vm.$data._datalist.filter(function(item,index,arr){
return item.name.indexOf(searchvalue) != -1;
mounted:function(){
.vue-dropdown.default-theme {
position: absolute;
left:15%;
display: none;
width: 70%;
margin: 0 auto;
margin-top: 1em;
padding: 1em;
z-index:10;
box-shadow: 0px 0px 10px #ccc;
&._self-show {
display: block!important;
.search-module {
position: relative;
.search-text {
width: 100%;
height: 30px;
padding-right: 2em;
padding-left:0.5em;
border-radius: 0.5em;
box-shadow: none;
border: 1px solid #ccc;
&:focus {
border-color: #2198f2;
.search-icon {
position: absolute;
top: 24%;
right: 0.5em;
color: #aaa;
.list-module {
max-height: 200px;
overflow-y: auto;
&._self-hide {
display: none;
margin-top: 0.5em;
padding: 0.5em;
&:hover {
cursor:pointer;
color: #fff;
background: #00a0e9;
.tip__nodata {
font-size: 12px;
margin-top: 1em;
三、组件使用
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
这次给大家带来vue做出可搜索下拉框,vue做出可搜索下拉框的注意事项有哪些,下面就是实战案例,一起来看一下。实践加深对vue的理解和运用有效途径,本文是基于vue的可搜索下拉框定制组件实现,在此记录.一、效果二、组件代码dropdown.vue@keyup='search($event)' :placeholder="placeholder" />:key="index">{{ite...
vue
、Dropdown 下拉菜单、Dropdown属性、
vue
Dropdown 全部下拉菜单、
vue
Dropdown 全部属性设计规则何时使用代码演示1.基本2.右键菜单
向下弹出的列表。
当页面上的操作命令过多时,用此组件可以收纳操作元素。点击或移入触点,会出现一个下拉菜单。可在列表中进行选择,并执行相应的命令。
最简单的下拉菜单。
<tem......
<?
php
error_reporting(0);//加上error_reporting(0);就不会弹出警告了
header("Content-type:text/html;charset=utf-8");//防止中文乱码
$con = mysqli_connect("localhost","mysql名","mysql密码","要链接的数据库名");
mysqli_query($con,'set names utf8');
if (!$con){
echo'链接数据库失败!';
======================
实例为可
搜索
的select选择框控件,可以实现与服务器交互,动态
搜索
。
脚本引用的jquery-editable-select插件是稍作修改的。
脚本为
php
,直接放到lampp中即可访问,供大家学习参考。
原生jquery.editable-select 插件下载地址
======================
插件名称:jquery-editable-select
下载地址:https://codeload.github.com/feshy2013/jquery.editable-select/zip/master
在
Vue
中实现一个
下拉框
自动带出另一个
下拉框
的方法,一般来说可以通过定义一个数据对象,将第一个
下拉框
的选项值与第二个
下拉框
选项值相对应的数据存储在其中,然后监听第一个
下拉框
的变化事件,当发生变化时,根据选项值更新第二个
下拉框
的选项值。
具体实现的步骤可以分为以下几步:
1. 定义一个数据对象,用来存储
下拉框
选项值的对应关系:
data() {
return {
selected: '',
options: [
{value:'apple', label:'苹果', category:'水果'},
{value:'orange', label:'橘子', category:'水果'},
{value:'carrot', label:'胡萝卜', category:'蔬菜'},
{value:'potato', label:'土豆', category:'蔬菜'}
subOptions: []
在上述代码中,selected表示第一个
下拉框
选中的选项值,options用来存储所有的选项值,subOptions用来存储第二个
下拉框
的选项值。
2. 监听第一个
下拉框
的变化事件,在事件处理程序中更新第二个
下拉框
的选项值:
watch: {
selected(newVal) {
this.subOptions = this.options.filter(option => option.category === newVal);
在上述代码中,使用了Array的filter方法,根据第一个
下拉框
选中的选项值来筛选出匹配的选项值并存储到subOptions中。
3. 在模板中使用v-model指令来绑定数据,并使用v-for指令生成
下拉框
选项:
<label>主选项:</label>
<select v-model="selected">
<option v-for="option in options" :value="option.category">{{ option.category }}</option>
</select>
<label>子选项:</label>
<select>
<option v-for="option in subOptions" :value="option.value">{{ option.label }}</option>
</select>
在上述代码中,v-model指令绑定了第一个
下拉框
选中的选项值,v-for指令根据数据对象循环生成选项值。第二个
下拉框
的选项值将根据第一个
下拉框
选中的选项值来变化,因此没有使用v-model指令绑定数据。
通过上述方法,即可实现一个
下拉框
自动带出另一个
下拉框
的功能。