如何在mpvue下收集小程序的formId
什么是formId
formId是小程序可以向用户发送模板消息的通行证,简单而言,你只有获取到formId,把它交给后台,后台同学才能向用户发送通知消息,而这个通行证的有效期只有七天。这是微信为了防止小程序滥用通知消息骚扰用户而提出的一种策略。
如何获取formId
小程序的消息文档告诉我们,获取formId有以下两种途径:支付和提交表单。用户支付一次,可获得3个formId,用户提交表单一次可得到一个formId。如果你的小程序中没有支付行为,需求又需要向用户发送消息时,你就只能依靠提交表单了。
form和form-type
小程序中有个组件叫做form。这个组件平常没什么用,说实话,在搜集formId之前,我还真没有注意过它,但是谁让它是formId的生产者呢,我们需要给用户发消息时,就很有必要了解一下了。
form组件有个属性叫report-submit当在标签中加入这个属性时,一旦表单提交,submit回调中就可以拿到formId了。来看一段代码:
<form report-submit @submit="uploadFormId">
<button form-type="submit"> 查看/分享/首页/支付</button>
</form>
这里有两个关键点,一个是button要添加form-type="submit",用来触发表单的提交事件,另一个是要在form元素中加上report-submit属性。这样当用户点击时,你就可以在submit事件的回调中,从event.detail.formId获得一个formId了,拿到之后,通过调用接口上传给后台即可。
获取尽可能多的formId
从运营的角度而言,formId肯定是越多越好。所以每一个页面上用户的每一次点击我们都巴不得触发一次表单提交。哪怕从界面上讲,这次点击可能是跳转,弹窗的功能,跟表单完全无关,都要把button放在一个form中。但是这样无疑增加了前端的工作量,因为需要为每个页面的submit事件绑定一个上传formId的方法。一个可行的方法是借助vue的mixin,为每一个页面实例混入一个上传formId的方法:
// app.js
Vue.mixin({
methods: {
uploadFormId (e) {
this.req({
url: '/api/v1/formid?formId=' + e.target.formId
})
}
}
})
上面的代码,我们在app.js中,为Vue的所有页面实例注入一个叫uploadFormId的方法。这样,我们就不需要在页面中重复写这个没用的方法。在需要formId的时候,我们只需要为button加一个form-type属性,再把它包在form里面即可。或者写一个<formButton>的组件,把这个模板也封装起来,这样就能让这些多出来的事变得简单点(完)
如何在mpvue下收集小程序的formId的更多相关文章
- 利用mpvue开发微信小程序
最近公司部门负责人提出需求需要开发一款微信小程序,由于本人之前是做前端开发的,对于小程序开发一窍不通,但是很多时候我们都是把不会做变成我会学.于是便在网上寻找小程序开发教程,相比于相生的小程序开发,本 ...
- mpvue开发微信小程序,分享按钮报错:`Cannot read property 'apply' of null`
用mpvue开发微信小程序,分享按钮报错:Cannot read property 'apply' of null onShareAppMessage 是于微信小程序Pages的生命周期钩子,顾这个方 ...
- 使用mpvue开发微信小程序
更多内容请查看 我的新博客 地址 : 前言 16年小程序刚出来的时候,就准备花点时间去学学.无奈现实中手上项目太多,一个接着一个,而且也没有开发小程序的需求,所以就一拖再拖. 直到上周,终于有一个小程 ...
- mpvue体验微信小程序开发
微信小程序 https://developers.weixin.qq.com/miniprogram/introduction/index.html?t=18082114 微信小程序是一种全新的连接用 ...
- mpvue框架的小程序和H5同时开发
demo链接1.样式统一为了达到共用一套样式,采用px2rem-loader和px2rpx-loader进行代码的打包,细节如下: 由于UI设计图是在蓝湖上标注,宽度750,选择像素 PX 样式中直接 ...
- # 如何在Windows下运行Linux程序
如何在Windows下运行Linux程序 一.搭建 Linux 环境 1.1 安装 VMware Workstation https://www.aliyundrive.com/s/TvuMyFdTs ...
- [技术博客] 微信小程序的formid获取
微信小程序的formid获取 formId的触发 微信小程序可以通过收集用户的formid,获取formid给用户主动推送微信消息.获取formid有两个途径,一个是触发一次表单提交,或者触发一次支付 ...
- 基于mpvue搭建微信小程序
mpvue是美团开源的一套语法,语法与vue.js一致,快速开发小程序的前端框架.框架基于vue.js核心,修改了vue.js的runtime和compiler实现,使用此框架,开发者可以完全使用vu ...
- 用mpvue构建微信小程序
背景 由于机器人协会进行鼓励大家多读书的活动,所以为了可以更好的.更有效果,所以我跟会长提了一个建议,做一个微信小程序,那么为什么是微信小程序呢? 1.现在微信小程序比较好,用户也比较多:利用微信小程 ...
随机推荐
- cobbler自动装机服务简介与配置
cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使用命令行 ...
- Linux中硬链接和软链接的区别
看了这篇文章之后,豁然开朗.直接放链接,感谢作者的分享. https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/#ico ...
- Java容器-个人整理1
1.初始化集合时,若能知道知道容量,尽量初始化时确定容量.容器类一般可以自动扩充,但扩充是有性能代价的. 2.Arrays.asList()的底层表示仍然时数组,因此不能进行调整尺寸的操作. 3.Ha ...
- Ubuntu学习之路
一. Ubuntu简介 Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的“ubuntu”一词,意思是“人性”.“我的存在是因为大 ...
- a,b值进行交换的方法
方法一 最容易想到的就是拿一个空“杯子”进行转换,代码如下: <script type="text/javascript"> ; ; var c; c = a; a = ...
- "hello,world"———C++入门有感
刚进入这所学校时,编程对于我来说应该算得上一个既熟悉又陌生的词语.虽然曾经耳边不断有人不断提到编程语言,C语言,程序猿等词语,但是作为一个外行人在来到这所学校之前,对于其中的奥秘还是没什么特别了解,仅 ...
- Maven之pom.xml配置文件详解
此文非原创,摘自:https://www.baidu.com/link?url=GlGgW21nijIiULDZj0RfPH8ofqGMqEnAzXiym7O3hfrZM5nFH2enukemBNTX ...
- 5随机到7随机的C++实现
一.5随机到7随机 //给定条件 int Rand1To5(){ + ; } //实现代码,使用插空法和筛的过程 int Rand1To7(){ ; do{ tmp = (Rand1To5() - ) ...
- 代码雨 html实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- Redux和React
export app class Compo1 extends Component{ } Compo1.propType = { a:PropTypes.string, fn:PropTypes.fu ...