小程序推送用户消息,能够模板建立一个form表单(最好用系统自带的button)vue
<form @submit="handlePush" report-submit='true'>
<button formType="submit">推送消息</button>
</form>
复制代码
小程序的formId须要尽量的在用户交互比较频繁的操做点上面加好埋点,因此就会在页面的多个地方加form。以前看网上的作法上有一种是在一个button上循环嵌套n个form表格,当用户点击一次以后就能够一次性拿到这n个formId值。实际上这种作法目前好像并不凑效,应该被微信和谐了,你会发现嵌套再多层最终拿到的formId值都是同样的,因此嵌套form的做用就不大了。小程序
另外,在小程序的主入口页,由于这里是uni-app开发,app.vue为主入口,要拿取formId值的话首先确定会想到在这里拿formId,这样就一劳永逸了。一般作法就是隐藏一个form表单,而后在生命周期里trigger表单提交事件。但实际是微信不支持更不建议dom操做...bash
综上,仍是老老实实的多加几个点吧。固然,偷懒仍是要偷的,加个minxins吧。微信
/** form-id-mixins.js **/
export default {
methods: {
getFormIdData(formId, type = 1) {
// 加type参数是为了有效区分都为同一类型的formId
const params = {
formId,
type
}
// 传值给后台的API
Api.getFormId(params)
.then(res => {
console.log('success')
})
},
}
}
复制代码
引用就简单了...app
import mixin from '@/form-id-mixins.js'
export default {
mixins: [mixin],
methods: {
handlePush(e) {
this.getFormIdData(e.detail.formId)
}
}
}
复制代码