javascript - vue如何偵聽change事件實現(xiàn)雙向綁定的?
問題描述
我們用原生的事件偵聽一個input輸入框變化時綁定這么一個事件,這個回調(diào)函數(shù)執(zhí)行的條件是輸入框blur之后
el.addEventListener(’change’, function(e){ console.log(e.target.value);})
但是 Vue.js 和 React.js這類框架對于綁定change事件的input并不需要blur才會觸發(fā)回調(diào)函數(shù),而是每一次實時輸入就會觸發(fā)回調(diào),就像IE的onpropertychange事件一樣。
這個是如何做到的?
問題解答
回答1:但是 Vue.js 和 React.js這類框架對于綁定change事件的input并不需要blur才會觸發(fā)回調(diào)函數(shù),而是每一次實時輸入就會觸發(fā)回調(diào),就像IE的onpropertychange事件一樣。 這個是如何做到的?
vue中的輸入框默認(rèn)監(jiān)聽的是input事件,所以輸入就會觸發(fā)回調(diào)。通過下面這種方式可以改成change中觸發(fā)。
<input v-model.lazy='msg' >回答2:
其實框架層面底層還是有對DOM事件的監(jiān)聽,比如你說的input輸入框監(jiān)聽了input事件,只是Vue框架不需要在input事件中去寫操作(雖然可以寫),自動將DOM變動轉(zhuǎn)換成了數(shù)據(jù)模型的變動。
最近在gitchat上做一場分享,可以看看這里。JavaScript 進(jìn)階之深入理解數(shù)據(jù)雙向綁定
回答3:根據(jù)你的問題你是想了解vue的雙向綁定實現(xiàn)原理,這類文章SF還是有許多的。@鄧木琴居然被盜用了 這篇文章可以參考下鏈接描述
相關(guān)文章:
1. docker - 如何修改運行中容器的配置2. javascript - Web微信聊天輸入框解決方案3. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應(yīng)4. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?5. Matlab和Python編程相似嗎,有兩種都學(xué)過的人可以說說嗎6. javascript - 音頻加載問題7. javascript - 為什么form表單提交沒有跨域問題,但ajax提交有跨域問題?8. javascript - 關(guān)于audio標(biāo)簽暫停的問題9. javascript - history.replaceState()無法改變query參數(shù)10. css - 對于類選擇器使用的問題
