Vue js model binding per jQuery date picker
Aug 30 2020
Sto usando il selettore di date jQuery e funziona perfettamente. Sono nel componente Vue. quando faccio clic sul campo di immissione della data, viene visualizzato il selettore di date, ma quando scelgo una data e vedo il risultato nella console non ho ottenuto nulla. La data non è vincolante.
<form @submit.prevent="search()">
<div class="card">
<div class="card-body">
<div class="card-header"></div>
<div class="card-body">
<div class="row">
<div class="col-md-8">
<input type="text" v-model="date" class="form-control" id="datepicker" >
</div>
<div class="col-md-4">
<button class="btn btn-primary" >Search</button>
</div>
</div>
</div>
</div>
</div>
</form>
<script>
export default {
data(){
return{
date:''
}
},
mounted() {
console.log('Component mounted.')
},
methods:{
search(){
//I want to get user chooses date here so that I can send to endpoint
console.log(this.date)//got nothing here
},
},
}
</script
quando faccio clic sul pulsante di ricerca, dovrei ottenere la data nella console ma non ho ricevuto nulla, come ottenere la data selezionata corrente dall'utente? Grazie
Risposte
tuhin47 Aug 31 2020 at 16:52
Puoi associare l'input all'interno mounteddell'hook con il selettore di date jquery.
new Vue({
el: '#app',
data() {
return {
date: ''
}
},
mounted() {
console.log('Component mounted.');
let selfInstance = this;
$('#datepicker').datepicker({
onSelect: function(selected, datePicker) {
selfInstance.date = selected;
}
});
},
methods: {
search() {
//I want to get user chooses date here so that I can send to endpoint
console.log(this.date) //got nothing here
},
},
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<form id="app" @submit.prevent="search">
<div class="card">
<div class="card-body">
<div class="card-header"></div>
<div class="card-body">
<div class="row">
<div class="col-md-8">
<input type="text" v-model="date" class="form-control" id="datepicker">
</div>
<div class="col-md-4">
<button class="btn btn-primary">Search</button>
</div>
</div>
</div>
</div>
</div>
</form>
Nota : this.datenon funzionerà all'interno dei blocchi jquery. Quindi un'istanza dovrebbe essere definita da assegnare con vue.