<!DOCTYPE html> <html lang="en"> <head> <Meta charset="UTF-8"> <Meta name="viewport" content="width=device-width,initial-scale=1.0"> <Meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://unpkg.com/vue/dist/vue.js"></script> <style> html,body { font: 13px/18px sans-serif; } select { min-width: 300px; } </style> </head> <body> <div id="el"></div> <!-- using string template here to work around HTML <option> placement restriction --> <script type="text/x-template" id="demo-template"> <div> <p>Selected: {{ selected }}</p> <select2 :options="options" v-model="selected"> <option disabled value="0">Select one</option> </select2> </div> </script> <script type="text/x-template" id="select2-template"> <select> <slot></slot> </select> </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‘) } }) var vm = new Vue({ el: ‘#el‘,template: ‘#demo-template‘,data: { selected: 2,options: [ { id: 1,text: ‘Hello‘ },{ id: 2,text: ‘World‘ } ] } }) </script> </body> </html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。