簡體   English   中英

檢測輸入值的更改-vue2

[英]Detecting changes to an input value - vue2

我正在為vue2使用日期時間選擇器組件 盡管它可以很好地呈現並且似乎可以在基本用法下正常運行,但是我無法檢測到vue組件中輸入值的更改。 我嘗試將@change添加到組件實例,盡管它似乎從未觸發過。 知道為什么會這樣嗎? 注意,v模型成功更新cool的值。

Vue方法

 export default {
        ...           
        methods: {
          someEvent() {
            alert("SUCCESS"); //this never fires
          }

Vue標記

                       <date-picker
                                v-model="cool"
                                lang="en"
                                type="datetime"
                                input-class="date-time-picker"
                                format="MM/DD/YYYY hh:mm A"
                                @change="someEvent()"
                                :confirm="true"
                        >
                        </date-picker>

JsFiddle: https ://jsfiddle.net/aw5g3q9x/

我不知道日期選擇器,但是在您的情況下,您可以使用變量更改監視程序

 Vue.use(window.DatePicker.default) new Vue({ el: '#app', data () { return { value: '' } }, watch: { value() { alert("OK"); } } }) 
 <script src="//unpkg.com/vue/dist/vue.js"></script> <script src="//rawgit.com/mengxiong10/vue2-datepicker/master/dist/build.js"></script> <div id="app"> <date-picker v-model="value" lang="en" type="datetime" format="yyyy-MM-dd hh:mm:ss a" :time-picker-options="{ start: '00:00', step: '00:30', end: '23:30' }"></date-picker> {{ value }} </div> 

將事件偵聽器添加到組件標簽(例如@change="someEvent()" )時,Vue將偵聽要從組件發出的自定義事件。 <date-picker>組件從不發出自定義change事件。 查看文檔 ,似乎只有在按下可選的“確定”按鈕時,它才會發出confirm事件。

你最好的選擇是設置在觀察者cool屬性火someEvent方法時的值cool的變化:

watch: {
  cool() {
    this.someEvent();
  }
}

供將來參考,如果組件的根元素是input ,則可以使用.native修飾符來監聽該input元素的change DOM事件,例如@change.native="someEvent()" 但是, <date-picker>組件的根元素是div ,因此在這種情況下不起作用。

我已經看到了您用於日期時間選擇器的軟件包,並且我懷疑它們是否支持@change事件。 您確定他們這樣做嗎?

但是,要解決此問題,可以使用計算屬性或觀察程序來監視value變量中的更改。 這是更新的小提琴https://jsfiddle.net/aw5g3q9x/2/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM