0
jQuery select2プラグインをカスタムディレクティブの中にラップして統合しています。Select2とVue指令
export default {
data() {
return {
selected: null,
options: []
}
},
ready() {
this.fetchUsers()
}
methods: {
fetchUsers: function() {
this.$http({
url: '/api/users/get-all',
method: 'GET'
}).then(function (response) {
this.$set('options', response.data)
}, function (response) {
// error callback
});
}
},
directives: {
select: {
twoWay: true,
priority: 1000,
params: ['options'],
bind: function() {
var self = this;
$(this.el)
.select2({
theme: "bootstrap",
closeOnSelect: true,
minimumInputLength: 3,
data: this.params.options
})
.on('change', function() {
self.set(this.value)
})
},
update: function (value) {
$(this.el).val(value).trigger('change')
},
unbind: function() {
$(this.el).off().select2('destroy')
}
}
}
}
とHTML:
<select v-select="selected" :options="options"></select>
私はすべてのユーザーを取得しようとfetchUsers機能のオプションに設定されますが、変数のオプションは常に空であるのでfetchUsers機能がSELECT2ディレクティブの後に実行されたようです。
どうすればすべてのユーザーをajax(vue-resource)で取得し、そのあとでselect2に入力できますか?
ありがとうございました:D:D。しかし、paramsWatchersはより正確です:Dと私は変更する必要があります:v-bindオプション:ドキュメントのようなオプション? – user3118789