关于does not have a method xx to handle event "tap"我有话要说
前言
> 我正在对接微信小程序订阅消息功能,看了官方文档觉得挺简单的。于是踩坑开始了
###### 应该是这样简单的
```
wx.requestSubscribeMessage({
  tmplIds: [''],
  success (res) { }
})
```
###### 你直接调用会得到
`订阅失败 {errMsg: "requestSubscribeMessage:fail can only be invoked by user TAP gesture."}`
###### 根据这个错误,得到必须要用手动调用(这个要好好理解)。调整后你得到以下代码
```
 <button open-type="openSetting" bindopensetting="openSettings">打开设置页</button>
 这个按钮会直接打开授权设置页面,目前还不是你的业务范围(你会搜到的大部分答案)
 
 第二种方式是这样绑定bindtap
 <button >授权</button>
 如果你也是用的uniAPP开发
 methods: {
     openSettings(){
         wx.requestSubscribeMessage({
          tmplIds: [''],
          success (res) { }
        })
     } 
 }
```
###### 第一种方法,目前不需要,你需要的弹出订阅消息授权框
###### 于是方式二,你始终得到`Component "pages/index/home" does not have a method "openSettings" to handle event "tap".`

然后开始各种网上找答案

###### 这里我也把看到的一些答案汇总
1. bindtap=" openSettings " 是否前后有空格
2. js文件不需要包一层methods,组件形式需要包一层【这里我挪进去挪出来试,无用】
3. bindtap="这里的函数不要带参数直接写函数名";如果要传参数使用data-xxx的形式传递
4. 在js中没有定义方法
以上都没有解决我的问题
###### 回到最原始的时候,微信要求该方法必须是用户调用,于是机灵了一下,不用bindtap直接用click。得到了我想要的结果。
`<button @click="openSettings()">打开</button>`

###### 总结
这个功能很难吗?我还是觉得简单的,但是我却花了两个小时以上。原本半个小时不到就可以完成的功能
关于does not have a method xx to handle event "tap"我有话要说的更多相关文章
- Android webview js 调用java方法报错"Uncaught TypeError: Object [object Object] has no method xx
		webview开发,在Android4.4下js调用java方法报错"Uncaught TypeError: Object [object Object] has no method,同样的 ... 
- bind:tap="onLike" 中不能添加参数 及 dataset 传值
		<view bind:tap="onLike({{id}})"></view> //Component "pages/book-detail/bo ... 
- method.invoke()s
		在框架中经常会会用到method.invoke()方法,用来执行某个的对象的目标方法.以前写代码用到反射时,总是获取先获取Method,然后传入对应的Class实例对象执行方法.然而前段时间研究inv ... 
- [Angular] HostListener Method Arguments - Blocking Default Keyboard Behavior
		We are going to see how to using method arguments for @HostListener. First, we can use HostListener ... 
- iOS 运行时runtime控制私有变量以及私有方法
		OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ... 
- 【原】iOS动态性(二):运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等)
		OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ... 
- jQ1.5源码注释以及解读RE
		jQ作为javascript的库( ▼-▼ ), 尽善尽美, 代码优美, 值得学习. 这一周平常上班没啥事也看jQ1.5的代码, 今天周六差不多看完了(Sizzle部分还没看), 重新看了一下, ... 
- Backbone事件模块源码分析
		事件模块Backbone.Events在Backbone中占有十分重要的位置,其他模块Model,Collection,View所有事件模块都依赖它.通过继承Events的方法来实现事件的管理,可以说 ... 
- Struts2 验证规则配置文件
		1. Action级别校验命名格式: ActionClassName-validation.xml 2. Action中某个方法的校验命名格式: ActionClassName-ActionAlias ... 
- jQuery1.4源码解读
		来吧, 慢慢折腾吧 总结一下: jq1.4挺简单的, 正则写的不多, 看的都懂, 多写一些 三目写法到底要不要 特殊的地方的注释一定要有 /*! * jQuery JavaScript Library ... 
随机推荐
- 哪里有 class 告诉我?
			说明 本文中的 JVM 参数和代码在 JDK 8 版本生效. 哪里有用户类? 用户类是由开发者和第三方定义的类,它是由应用程序类加载器加载的. Java 程序可以通过CLASSPATH 环境变量,JV ... 
- Qt音视频开发30-qmedia内核qt4方案phonon播放(支持视频流)
			一.前言 在Qt4中如果需要播放视频,一般用phonon多媒体框架,这应该就是Qt5/Qt6中多媒体框架的前身(查阅qmultimedia模块的相关代码可以发现架构几乎雷同,除了部分命名变了以外),p ... 
- Qt编写可视化大屏电子看板系统32-模块10大屏地图
			一.前言 大屏地图模块采用浏览器模块+echart组件,Qt自带了webkit或者webengine模块,其中在win上mingw编译器的Qt5.6以后的版本,没有了浏览器模块,这个就需要用第三方的浏 ... 
- Qt编写地图综合应用28-闪烁点图
			一.前言 Qt除了内置了各种UI组件以外,还直接集成了浏览器控件,注意哦这可是跨平台的浏览器控件哦,在5.6版本以前集成的是webkit,以后集成的是webengine,使得程序的灵活性拓展性大大增强 ... 
- Qt项目升级到Qt6吐血经验总结
			Qt的版本发布越来越频繁,Qt6发布已经有一段时间了,越来越多的人咨询之前的代码是否可以增加对Qt6的支持,包括开源的项目QWidgetDemo(一年时间超过2.6K star),近期百忙之中,对所有 ... 
- Qt开源作品26-通用按钮地图效果
			一.前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜 ... 
- Qt编写安防视频监控系统31-onvif设备搜索
			一.前言 做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大概的标准,能够对各个厂家的监控设备进行常用的一些操作,比如搜索.获取信息.云台控制.事件订阅.抓拍图片等,如果没有这个规范 ... 
- Apollo功能及原理详解
			前言 公司里面使用的配置中心是携程开源的Apollo,之前我只使用过Nacos,遂记录一下学习过程. Apollo工作原理 模块介绍 上图就是Apollo的总体设计,从下往上挨个分析: ConfigD ... 
- Linux C语言面试考点
			数组 数组初始化方法 /* 以下为自动类型 *//* 一维数组 */int arr[] = {1, 3, 5}; //不指定长度,由编译器自动计算int arr[5] = {0, }; //指定长度 ... 
- 【转】为什么说java只有值传递?
			原文地址: https://www.cnblogs.com/ironHead-cjj/p/11366888.html 
