美文网首页
微信小程序捕获formId实现无限量发送模板信息

微信小程序捕获formId实现无限量发送模板信息

作者: MsgSS | 来源:发表于2018-09-07 00:11 被阅读3863次

    前言:微信小程序发送模板信息有两个前提,要么触发一次表单提交,要么触发一次支付。如果需要给用户主动推送模板信息,那么就需要拿到足够多的formId(支付不实现),下面介绍如何才能获取足够多的formId。

    PS:使用该方法的时候需要符合微信运行规则。

    思路:我们封装一个组件,组件内部是一个form标签和一个提交按钮,form表单支持返回formId,然后该组件接收外部标签(也就是slot)和一个回调函数,当点击该组件的时候,触发表单提交并向上冒泡(外部组件的内部时间会无效,只能通过回调方法来触发)。

    第一步:创建catchform捕获组件

    catchform.wxml

    <form class="catchForm" report-submit bindsubmit="catchSubmit" >

        <button form-type="submit" class="catchBtn">

            <slot ></slot >

        </button>

    </form>

    第二步:优化CSS

    因为button按钮的样式权重高,行号和其他属性均有自己的定义,会严重影响内部组件的ui,所以要对button的样式就行重置,主要思路是继承父级的样式。

    catchform.wxcc

    form.catchForm button.catchBtn {

      border: none;

      text-align: inherit;

      padding: 0;

      margin: 0;

      line-height: inherit;

      background: transparent;

      color: inherit;

      border-radius: 0;

      font-size: inherit;

    }

    form.catchForm button.catchBtn::after {

      border: none;

    }

    第三步:处理组件form提交

    提交的时候会触发catchSubmit函数,catchSubmit函数内部同步表单信息和触发回调,代码如下:

    catchform.js

    Component({

      /**

      * 组件的属性列表

      */

      properties: {

      },

      /**

      * 组件的初始数据

      */

      data: {

        upload: {

          type: Boolean,

          value: true

        }

      },

      /**

      * 组件的方法列表

      */

      methods: {

        //点击即触发获取formId

        catchSubmit: function (e) {

          if (this.data.upload) {

            try {

              Request.post("/api/uploadFormId", {

                formId: e.detail.formId,

                touser: getApp().globalData.userInfo.openid,

                time: new Date()

              });

            } catch (err) {

              //todo

            }

          }

          //触发回调

          this.callback(e);

        },

        /**

        * 捕获点击回调

        */

        callback: function (e) {

          try {

            this.triggerEvent("callback", e);

          } catch (err) {

            //todo

          }

        }

      }

    })

    第四步:使用catchform捕获组件

    使用组件

    bind:callback="toDetail",指触发表单提交后的回调函数
    data-record="{{item}}" , 是自定义参数

    后续再根据formId和openId就可以发送模板信息了

    相关文章

      网友评论

          本文标题:微信小程序捕获formId实现无限量发送模板信息

          本文链接:https://www.haomeiwen.com/subject/pqwawftx.html