thinkphp3.2 自定义的vue-select2组件

场景

. vue组建中普通的select2 就不可行了, 这时候需要自定义的vue-select2组件出来
. 因为我的是在组件中调用vue-select2组件 所以需要props双向绑定

分析

. 官方的列子是简单的一个组件 但是没有办法双向通信, 实现的内容也只是简单的select2; 所以功能还是
   需要定制  
. 在使用的thinkphp3.2 所以对vue的支持不是特别友好 

参考链接

https://cn.vuejs.org/v2/examples/select2.html

解决

. 建立文件 select2_template.html 填充内容如下(如果是laravel可以直接使用laravel的组件机制)
. 使用方法
   1.   options  [{id : 1 , text:'涨势'}, {id : 2, text:'涨势2'}, {id : 3, text:'涨势3'}]   这个是展示的内容
   2.  selected   select的name 
   3. description   提示(其实就是不选择这一项的问题)

<select_template :options="list_user_options" :selected.sync="id" description="全部账号"></select_template>

<script type="text/x-template" id="select2-template">
    <select class="form-control">
        <slot></slot>
    </select>
</script>

<script type="text/x-template" id="select-demo-template">
    <select2 :options="options" v-model="selected">
        <option  value="">{{ desc }}</option>
    </select2>
</script>

<script>
    Vue.component('select2', {
        props: ['options', 'value'],
        template: '#select2-template',
        mounted: function () {
            var vm = this
            $(this.$el)
            // init select2
                .select2({data: this.options})
                .val(this.value)
                .trigger('change')
                // emit event on change.
                .on('change', function () {
                    vm.$emit('input', this.value)
                })
        },
        watch: {
            value: function (value) {
                // update value
                $(this.$el)
                    .val(value)
                    .trigger('change')
            },
            options: function (options) {
                // update options
                $(this.$el).empty().select2({data: options})
            }
        },
        destroyed: function () {
            $(this.$el).off().select2('destroy')
        }
    });

    Vue.component('select_template', {
        template: '#select-demo-template',
        props: ['options', 'selected', 'description'],
        computed: {
            desc: function () {
                return this.description ? this.description : '全部';
            }
        },
        watch: {

            // selected 监听器如果发生变化的话  那么需要自定义触发事件,更改父组件的值
            selected: function (selected) {
                // update  value
                this.$emit('update:selected', selected)
            }
        }

        // 需要的属性值如下
        // data : function() {
        //     return  {
        //         selected: 2,
        //             options: [
        //             { id: 1, text: 'Hello'},
        //             { id: 2, text: 'World'}
        //         ]
        // }}
    });

</script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ThinkPHP是一款基于PHP的开源Web应用框架,是一个轻量级、高效率的框架,具有模块化、面向对象和MVC设计模式等特点。ThinkPHP 3.2是ThinkPHP框架的一个历史版本,它在运行速度、安全性以及开发效率上都有不错的表现。 要下载ThinkPHP 3.2,首先需要打开ThinkPHP的官方网站(www.thinkphp.cn)。在官网主页上,我们可以找到“下载”按钮,点击进入下载页面。 在下载页面上,我们可以找到最新版本的ThinkPHP框架。为了下载ThinkPHP 3.2版本,我们需要向下滚动页面,找到“历史版本下载”或类似的标签,并点击进入历史版本页面。 在历史版本页面上,我们可以看到不同版本的ThinkPHP框架列表。找到并点击“ThinkPHP 3.2”版本,进入该版本的下载页面。 在下载页面上,我们可以选择下载源码或者下载压缩包。如果我们需要自己进行源码修改或者扩展开发,可以选择下载源码。如果我们只是使用框架进行开发而不需要修改源码,可以选择下载压缩包。 选择相应的下载方式后,点击下载按钮即可开始下载。下载完成后,我们可以使用解压软件将压缩包解压缩到我们的项目目录中,然后按照ThinkPHP 3.2的文档进行配置和使用。 总之,要下载ThinkPHP 3.2,我们只需要访问ThinkPHP的官方网站,找到历史版本下载页面,选择相应的下载方式,然后进行下载和安装。通过合理使用ThinkPHP框架,我们可以快速开发出高效、稳定的Web应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值