【发布时间】:2015-10-14 23:33:15
【问题描述】:
我正在使用 select2 来增强 html 选择元素。我想将 select 元素的值绑定到 Vue 变量,但是 Select2 似乎阻止了这一点。
在保留 Select2 行为的同时实现此数据绑定和事件侦听的最佳方式是什么。我想这是将 select2 事件链接到 Vue 实例的情况。
我已经让a fiddle 演示了这个问题(不在下面运行,但可以在 jsfiddle 上运行):
$('#things').select2();
new Vue({
el: "#vue-example",
data: {
thing: null,
thing2: null
},
methods: {
log: function(str) {
$('#log').append(str + "<br>");
}
}
});
select {
width: 50%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.12.8/vue.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="vue-example">
<label>Select2 Select Box</label>
<select name="things" id="things" v-model="thing" v-on="change: log('you changed thing1')">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
<br>
<br>
<label>Native Select Box</label>
<select name="things" id="things" v-model="thing2" v-on="change: log('you changed thing2')">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
<pre>{{ $data | json }}</pre>
<div id="log">
</div>
</div>
【问题讨论】:
-
也检查这个解决方案:stackoverflow.com/q/40973841/2815635
标签: javascript jquery jquery-select2 vue.js