gpt4 book ai didi

javascript - 将 Select2 选择绑定(bind)到 Vue js 模型数据

转载 作者:数据小太阳 更新时间:2023-10-29 04:58:59 27 4
gpt4 key购买 nike

我正在使用 select2 来增强 html 选择元素。我想将 select 元素的值绑定(bind)到 Vue 变量,但是 Select2 似乎阻止了这一点。

在保留 Select2 行为的同时实现此数据绑定(bind)和事件监听的最佳方法是什么。我想这是将 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>

最佳答案

更短的解决方案:

Vue.directive('select2', {
inserted(el) {
$(el).on('select2:select', () => {
const event = new Event('change', { bubbles: true, cancelable: true });
el.dispatchEvent(event);
});

$(el).on('select2:unselect', () => {
const event = new Event('change', {bubbles: true, cancelable: true})
el.dispatchEvent(event)
})
},
});

Trae 的回答很好,但是值已经存储在 select 元素上,所以您所要做的就是分派(dispatch)事件让 Vue 知道我们已经更改了它。

只需简单地做:

<select v-model="myprop" v-select2>
...

关于javascript - 将 Select2 选择绑定(bind)到 Vue js 模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com