Heim >Web-Frontend >js-Tutorial >Was soll ich tun, wenn das Vue-Referenz-Datepicker-Plugin den Wert des Datepicker-Eingabefelds nicht überwachen kann?

Was soll ich tun, wenn das Vue-Referenz-Datepicker-Plugin den Wert des Datepicker-Eingabefelds nicht überwachen kann?

小云云
小云云Original
2018-05-23 14:17:013149Durchsuche

In diesem Artikel wird hauptsächlich die Lösung für das Problem vorgestellt, dass Vue den Wert des Datepicker-Plugins eines Drittanbieters nicht überwachen kann. Ich hoffe, dass es einen gewissen Referenzwert hat kann jedem helfen.

1. Hintergrund

Im Vue-Projekt wird ein Datumsauswahl-Plug-in verwendet. Nach Auswahl des Datums kann Vue es nicht erkennen Das Eingabefeld für die Datumsauswahl

 <label class="fl">日期:</label>
 <p class="input-wrapper fr">
  <input class="daterangepicker" ref="datepicker" v-model="dateRange"/>
  <a href="javascript:;" rel="external nofollow" ></a>
 </p>
export default {
  data() {
    return {
      dateRange: &#39;&#39;
    }
  },
  watch: {
    dateRange(newVal, oldVal) {
      console.log(newVal) // 选择日期后无法监听dateRange的改变
    }
  }
}

2. Analyse

Bei der Suche nach Informationen wurde Folgendes festgestellt: Vue ist tatsächlich nicht in der Lage, durch Dritte verursachte Datenänderungen zu überwachen -Party-Plug-ins. Die obige Methode funktioniert also nicht. Vue stellt uns jedoch eine Methode zur Verfügung, mit der alle Daten in Daten umgewandelt werden können, die von Vue überwacht werden können: vm.$set.

3. Lösung

Nehmen Sie den Datepicker, den ich als Beispiel verwende (jquery-daterangepicker)

data() {
    return {
      date: &#39;&#39;,
      beginDate: &#39;&#39;,
      endDate: &#39;&#39;
    }
  },
mounted () {
  $(&#39;.daterangepicker&#39;).dateRangePicker({
    autoClose: true,
    format: &#39;YYYY-MM-DD&#39;
  }).bind(&#39;datepicker-change&#39;, this.setDate) //插件自带方法,选择日期后触发回调
 },
methods: {
  setDate() {
    let datepicker = this.$refs.datepicker
    //这一步是关键,具体说明可以参见vue api手册
    this.$set(this.date, &#39;beginDate&#39;, datepicker.value)
    this.$set(this.date, &#39;endDate&#39;, datepicker.value)
    this.beginDate = this.date.beginDate.slice(0, 11)
    this.endDate = this.date.endDate.slice(-10)
  }  
 },
  watch: {
  // 这里就可以监听数据变化啦,可以愉快的选择日期了!
   beginDate(newVal, oldVal) {
     this.$emit( &#39;beginDateChange&#39;, newVal )
   },
   endDate(newVal, oldVal) {
     this.$emit( &#39;endDateChange&#39;, newVal )
   }
  }

Verwandte Empfehlungen:

Ausführliche Erklärung der jQuery-UI-Datumsauswahl Datepicker

Detaillierte Erklärung der Verwendung des JS-Control-Bootstrap-Datepickers (Bild)

PHP-Aufruf My97DatePicker_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn das Vue-Referenz-Datepicker-Plugin den Wert des Datepicker-Eingabefelds nicht überwachen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn