知识汇总09~bootstrap-select在Vue中的封装

在项目中为何选择了bootstrap的bootstrap-select插件,因为相比其他下拉插件,这个插件更成熟,兼容性更好,也容易使用!

如何在Vue中封装成组件:


在项目中引入相应的bootstrap,与bootstrap-select的js与css

1、js:组件封装

  Vue.component('vm-select',{

    props:['options','value'],

    template:"<select class='selectpicker' data-live-search='true' data-live-search-placeholder='搜索'><option :value='option.name' v-for='option in options'>{{option.name}}</option></select> ",

    mounted:function(){

      var vm=this;

      $(this.$el).selectpicker('val',this.value!=null?this.value:null);

      $(this.$el).on('changed.bs.select',function(){

          vm.$emit('input',$(this).val());

          if(typeof(vm.method)!='undefined'){

            vm.method(vm.index,vm.childidx,this.value);

          }

        });

      $(this.$el).on('show.bs.select',function(){

          if(typeof(vm.load)!='undefined'){

            vm.load(vm.index,vm.childidx);

          }

        })

      },

    watch:{

        value(newV,oldV){

          $(this.$el).selectpicker('val',newV);

        }

      },

    updated:function(){

        this.$nextTick(function(){

          $(this.$el).selectpicker('refresh');

        })

      },

    destroyed:function(){

        $(this.$el).selectpicker('destroy');

      }

  })

到此,插件已经封装好了~

2、在html中使用 注意:在vue中要使用双向数据绑定,需要使用v-bind:属性,可省略为     :属性

<vm-select :options="appNameSelect"  v-model="item.appName" ref="typeSelect" :disabled="bbool"></vm-select>

  完成了~

可以根据项目需要,动态修改props参数和下拉菜单的循环数据结构,我的项目是传入的对象数组,所以……

 

posted @ 2018-07-30 17:51  刘欢乐  阅读(719)  评论(0编辑  收藏  举报