Привязка модели Vue js для средства выбора даты jQuery

#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.