#javascript #jquery #vue.js #vuejs2
#javascript #jquery #vue.js #vuejs2
Вопрос:
Я использую средство выбора даты jQuery, и оно работает отлично. Я нахожусь в компоненте Vue. когда я нажимаю на поле ввода даты, отображается средство выбора даты, но когда я выбираю одну дату и вижу результат в консоли, я ничего не получаю. Дата не привязывается.
<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
когда я нажимаю кнопку поиска, я должен получить дату в консоли, но я ничего не получил, как получить текущую выбранную пользователем дату? Спасибо
Ответ №1:
Вы можете привязать входные данные внутри mounted
крючка с помощью средства выбора даты 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>
Примечание: this.date
не будет работать внутри блоков jquery. Таким образом, должен быть определен экземпляр для назначения с помощью vue.