我在vuejs中使用select2,我发现vuejs不能使用jquery select2,因为vuejs正在使用navite html .
我正在使用此代码
Vue.directive('select', {
twoWay: true,
bind: function () {
$(this.el).select2()
.on("select2:select", function(e) {
this.set($(this.el).val());
}.bind(this));
},
update: function(nv, ov) {
$(this.el).trigger("change");
}
});
var app = new Vue({
el: '#app',
data: {
supplier_id: "niklesh"
}
})
$('#supplier_id').select2({});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.4/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.5/css/bootstrap.css">
<div id="app">
{{ supplier_id }}
<select id="supplier_id" class='form-control' v-model='supplier_id' v-select='supplier_id'>
<option value="atul">Atul</option>
<option value="niklesh">Niklesh</option>
<option value="sachin">Sachin</option>
</select>
</div>
请分享您的回复以处理此问题 .
3 回答
要使其与指令一起使用,我们需要了解
v-model
的工作原理 . 来自docs:只是语法糖:<input v-bind:value =“something”v-on:input =“something = $ event.target.value”>
对于select元素,
v-model
将侦听change
事件(不是input
) . 因此,如果指令在元素更改时调度change
事件,则v-model
将按预期工作 .这是您的代码的更新版本:
通过将select2值分配给vuejs数据,我能够解决这个问题 . 我这里没有使用自定义指令 .
如果这不是好方法或您建议的任何更好的解决方案,请评论 .