微信小程序報錯:does?not?have?a?method?"xxxx"?to?handle?event?"tap"的解決方案
今天在開發(fā)一個小功能,copy了之前寫的代碼,但是在實現功能時,出現了如下問題:
先在這簡單總結一下解決方案:
- 在調用方法時,在
" "
中前后多加了空格; - 在 js 中沒有定義該方法;
- 在 js 中方法定義的位置可能不對,比如放在了 data 中;
- 組件化開發(fā)中使用
methods
把方法包起來; - 取消勾選 “將 JS 編譯成 ES5”;
- 勾選“啟用代碼自動熱重載” 選項;
- 修改 “調試基礎庫” 版本;
如果我們對自己的代碼編寫能力比較自信,可以直接看一下 5、6、7 解決方案。
問題描述
編譯錯誤提示如下:
VM67:1 Component "pages/my/index" does not have a method " onJumpToHome" to handle event "tap".
上面提示的意思就是說:在配置中找不到 onJumpToHome
這個方法,所以在點擊響應時,會有警告,但是程序運行不會報錯。這也是小白在學習小程序時經常容易犯的錯誤,今天竟然把一個開發(fā)了多個小程序的我給呆住了,現在就來分析一下產生這個問題的原因有哪些。
問題分析
以下幾個原因可以逐個排查:
1.在調用方法時,在" "
中前后多加了空格
解決:這個問題可能是因為大意或者習慣導致的,在代碼編寫中,方法的前面多可能加了一個空格,檢查一下刪除前面的空格即可。
<view bindtap=" onJumpToHome">xxx</view>
2.在 js 中沒有定義該方法
解決:這個問題太low了,相信大家應該不會犯吧,有的話當我沒說。
3.在 js 中方法定義的位置可能不對,比如放在了 data 中
解決:這個問題也是很low的問題了,一般沒人會犯,除非有很多 data 的時候,可能眼花看錯行了,把方法提出來放到data后面就好了。
4.在不使用組件,直接在本頁的 js 定義中,不需要增加 methods
把方法包起來。也許新版本里沒有這一層了。直接寫方法就可以了。如果使用組件再加 methods
層。本人從他人的有組件的案例中學的代碼寫入沒有組件的頁面里,就出現了找不到對應方法的問題。
解決:這個是涉及組件開發(fā)的使用方式,大家可以看一下例子,具體不多說了。
比如:
5.取消勾選 “將 JS 編譯成 ES5”
解決:在工具 1.05.2106091 版本之后,原有的ES6 轉 ES5 和 增強編譯 選項統(tǒng)一合并為將 JS 代碼編譯成 ES5,此功能和原有的增強編譯邏輯一致。但是與開發(fā)工具的版本也有很大的關系。
這個問題詳見:代碼編譯-將 JS 代碼編譯成 ES5
6.勾選“啟用代碼自動熱重載” 選項
解決:新版開發(fā)者工具已實現熱重載功能,代碼修改實時更新,不需要重新編譯。有的時候代碼更新了,沒有重新編輯代碼會不生效,所以可以考慮勾選該選項。
7.修改 “調試基礎庫” 版本
解決:這個基礎庫的版本還在不斷升級,開發(fā)工具的問題也有很多,所以,這個問題還請大家自求多福,可以試探性地選擇,不過,基礎庫的版本對線上代碼是沒有影響的。
總結
在小程序開發(fā)中,出現 does not have a method ..to ..event 'tap'
的問題,我網上查了一下有幾種解決方案,但是都不能解決我的問題,當我們對自己的代碼比較信任時,可以考慮從我們的開發(fā)工具入手。
如果其他小伙伴有更好的解決方案,可以在下面留言哦,這樣類似的問題可以在一個問題中得以解決,避免到處查找浪費時間。
到此這篇關于微信小程序報錯:does not have a method "xxxx" to handle event "tap"的解決方案的文章就介紹到這了,更多相關小程序報錯does not have a method內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解XMLHttpRequest(二)響應屬性、二進制數據、監(jiān)測上傳下載進度
這篇文章主要為大家詳細介紹了XMLHttpRequest響應屬性、二進制數據、監(jiān)測上傳下載進度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09