vue?button的@click方法無效鉤子函數(shù)沒有執(zhí)行問題
Vue項目中使用button綁定click事件
事件無法觸發(fā)methods中的方法解決辦法
事故還原
小胖做完公司的項目,老大看著小胖疲憊的臉龐,有點心疼小胖,就給小胖放了三天假,沒有給小胖新的需求。小胖平常主要是寫的后端,但是最近跟小順子有點聊技術,小順子經(jīng)常把Vue掛在嘴邊,小胖有點不服氣,正好最近也有時間,打算利用這三天把Vue入個門,但是剛開始就把小胖給難住了,小胖寫了一個button,并綁定了click點擊事件,但是發(fā)現(xiàn)無法觸發(fā)methods中的but方法,異常提示信息大致的意思是but_ajax未定義。
瀏覽器console顯示異常信息
but_ajax is not defined
at HTMLButtonElement.onclick
出了bug但是小胖的內(nèi)心毫無波動,腦袋里想起了公司架構(gòu)師老王經(jīng)常說的一句話,遇到bug不要慌,解bug才是程序員最快的成長方式(但是下面遇到了三個基礎性的錯誤小胖還是有點尷尬的)
端口綁定異常,這個異常說明就是端口已經(jīng)被綁定了(后端是我之前寫好的,我準備將端口改成4200,但是4200已經(jīng)在運行angular項目)
java.net.BindException: Address already in use: bind
跨域問題
這個項目前端的路徑是localhsot:63342 ,然后后端的路徑的localhost:28089 ,前端發(fā)送ajax的時候url路徑需要帶上接口,這個是跨域必須的,然后后端需要配置跨域信息(添加注解@CrossOrigin(origin={“前端的url”}),或者編寫一個config類)
vue button (特別注意) 犯了一個很沙雕的錯誤,浪費一個小時
vue 中button 的點擊事件
<button v-on:click="but_click">發(fā)送請求</button>
js 中 button點擊事件
<button onclick="but_click">發(fā)送請求</button>
剛開始小胖犯了一個很沙雕的錯誤,在vue的methods中定義一個點擊事件的方法,但是在 中 使用的是js的onclick事件,所以就出現(xiàn)找不到method,js的點擊事件對應的方法,直接寫在script中,放在methods中不會被識別
<script> ?? ?but_ajax = function() { ? ? $.get(url).then(response => { ? ? ? ? this.tableData = response; ? ? }) } </script>
userData is not defined
在 data中定義了 userData ,但是出現(xiàn)異常如下,異常信息說明userData沒有定義,但是我們明明在data中定義過了,小胖我思前想后,發(fā)現(xiàn)我又寫了一個沙雕的bug,userData是vue對象中的data里面定義的,要想使用,必須使用this關鍵字,this指代的是vue對象。
Uncaught ReferenceError: userData is not defined
Vue的第四個bug 鉤子函數(shù)(mounted/created)
小胖有一個想法,就是在頁面加載的時候,直接發(fā)送ajax請求,然后將數(shù)據(jù)顯示在table中(table 是使用的el-table ElementUI的組件),小胖想著鉤子函數(shù)也是一個method,所以想當然的把created(mounted) 放在methods里面,結(jié)果發(fā)現(xiàn)沒有效果,這個時候小胖想肯定是鉤子函數(shù)沒有執(zhí)行,應該是沒有被瀏覽器識別,小胖就直接懷疑鉤子函數(shù)是不是放錯位置了,小胖試著將鉤子函數(shù)(mounted/created)跟el、data、methods放在同一級,然后重新啟動項目,效果出來了。
Vue的第五個bug
鉤子函數(shù)發(fā)送ajax獲取數(shù)據(jù),放回到表單中,這里有一個明顯的延時,數(shù)據(jù)要過將近1s才顯示,出現(xiàn)過兩次,后面基本上在200ms左右,這里因為我的element.css elementui.js以及vue.js都是在放在本地,不是去請求網(wǎng)絡,所以速度稍微快一點。(如果面試問道怎么優(yōu)化頁面響應速度的話,可以說將js,css文件使用min版的,然后使用離線文件,(一般企業(yè)開發(fā),開發(fā)階段可能使用網(wǎng)絡文件,但是生產(chǎn)環(huán)境都是使用離線文件))
小結(jié):寫一個簡單的vue 按鈕,出現(xiàn)了跨域、vue與js的點擊事件混用、vue中data的調(diào)用,這三個bug,發(fā)現(xiàn)對一些基礎知識的理解差很多,平常還是需要多敲,多敲確實可以快速成長,但是需要將基礎的東西過一遍再去敲,去琢磨才可以事半功倍,看似簡單的需求,居然花了兩個小時找bug,至此Vue算是邁進了門,但是后面的路還有很長。
vue @click失效問題
鑒于我這只豬花了半天時間重寫代碼
所以寫這篇隨筆
紀念我白白逝去半天時光
貼代碼(直接截圖)
怎么看都沒有問題,我這只豬一遍一遍認認真真敲了好多遍
最后找到了問題所在:
頁面中使用了better-scroll,自動禁用了click事件,其實之前好像沒有這種情況,后續(xù)會研究一下的
解決方法
給加個click: true就好了
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue使用codemirror實現(xiàn)一個可插入自定義標簽的textarea
這篇文章主要為大家詳細介紹了Vue如何使用codemirror實現(xiàn)一個可插入自定義標簽的textarea,感興趣的小伙伴可以跟隨小編一起學習一下2024-02-02解決vue項目input輸入框雙向綁定數(shù)據(jù)不實時生效問題
這篇文章主要介紹了解決vue項目input輸入框雙向綁定數(shù)據(jù)不實時生效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08詳解Vue前端生產(chǎn)環(huán)境發(fā)布配置實戰(zhàn)篇
這篇文章主要介紹了詳解Vue前端生產(chǎn)環(huán)境發(fā)布配置實戰(zhàn)篇,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05vue2.0實現(xiàn)倒計時的插件(時間戳 刷新 跳轉(zhuǎn) 都不影響)
我發(fā)現(xiàn)好多倒計時的插件,刷新都會變成從頭再來,于是自己用vue2.0寫了一個,感覺還不錯,特此分享到腳本之家平臺供大家參考下2017-03-03vue+elementui實現(xiàn)下拉表格多選和搜索功能
這篇文章主要為大家詳細介紹了vue+elementui實現(xiàn)下拉表格多選和搜索功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11