微信订阅消息(vue2)

文章提供了一种解决wx-open-subscribe组件在iOS设备上不兼容的方法,通过原生JavaScript创建元素并添加事件监听来实现订阅按钮的功能。在success和error事件中处理订阅状态,并根据用户响应更新数据。
摘要由CSDN通过智能技术生成

不兼容IOS

HTML部分

                          <wx-open-subscribe
                            :template="templateIdArr"
                            id="subscribe-btn"
                            @success="successSubscribe"
                            @error="subErrorSubscribe"
                            style="
                              width: 100%;
                              text-align: center;
                              height: 100%;
                              display: block;
                            "
                          >
                            <script type="text/wxtag-template" slot="style">
                              <style>
                                .subscribe-btn {
                                  display:inline-block;
                                  width: 100%;text-align: center;margin-left: 15px auto;color: #fff;background-color: #409eff;border-radius: 3px;height: 40px;line-height: 40px;font-size: 14px;
                                }
                              </style>
                            </script>
                            <script type="text/wxtag-template">
                              <p class="subscribe-btn">
                                提交
                              </p>
                            </script>
                          </wx-open-subscribe>

Script部分

 successSubscribe(e) {
      let subdetail = JSON.parse(e.detail.subscribeDetails);
      this.templateIdArr.map((item, index) => {
        if (subdetail[item].indexOf("accept") > -1) {
          this.pcform.tps.push(item);
        }
      });
     // this.submitForm();请求后端
    },
    subErrorSubscribe(e) {
     // this.submitForm();请求后端
      console.log("用户拒绝了订阅消息", e);
    },

原生嵌入写法兼容ios:

(备注:请求token要在mounted中执行,否则获取不到DOM)

<div id="sub" style="width: 100%"></div>
//methods方法内
createSubscribeBut() {
      let script = document.createElement("script");
      script.type = "text/wxtag-template";
      script.text = `<p class="mask-sub-btn" id="btn2" style="width: 100%;text-align: center;margin: 15px auto;color: #fff;background-color: #409eff;border-radius: 4px;height: 40px;line-height: 40px;font-size: 14px;">提交</p>`;
      let html = `<wx-open-subscribe template="${this.templateIdArr}" id="share-success-subscribe-btn" style="width:100%;text-align:center;height: 100%;display: block;">${script.outerHTML}</wx-open-launch-weapp>`;
      document.getElementById("sub").innerHTML = html;
      let subBtn = document.getElementById("share-success-subscribe-btn");
      this.watchSub(subBtn);
    },
    //监听订阅事件
    watchSub(subBtn) {
      let self = this;
      subBtn.addEventListener("success", function (e) {
        let subdetail = JSON.parse(e.detail.subscribeDetails);
        self.templateIdArr.map((item, index) => {
          if (subdetail[item].indexOf("accept") > -1) {
            self.pcform.tps.push(item);
          }
        });
      });
      subBtn.addEventListener("error", function (e) {
        console.log(e);
      });
     // this.submitForm();请求后端
    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js中模拟微信APP的消息提示角标通常涉及到前端的用户界面动态更新和状态管理。你可以使用以下步骤来实现这一功能: 1. **状态管理**:首先,你需要一个状态来表示是否有未读消息。可以使用Vuex或自定义一个对象来存储这个状态。例如,设置一个名为`unreadMessageCount`的属性。 ```javascript // 使用Vuex示例 const state = { unreadMessageCount: 0 }; export default new Vuex.Store({ state, mutations: { updateUnreadMessageCount(state, count) { state.unreadMessageCount = count; } }, actions: { incrementUnreadMessage({ commit }) { commit('updateUnreadMessageCount', state.unreadMessageCount + 1); } } }); ``` 2. **组件监听状态变化**:在组件中,订阅这个状态的变化并显示角标。 ```html <template> <div> <span v-if="unreadMessageCount > 0" class="message-badge">{{ unreadMessageCount }}</span> <!-- 其他内容 --> </div> </template> <script> import { mapState } from 'vuex'; export default { computed: { ...mapState(['unreadMessageCount']), }, methods: { handleNewMessage() { this.$store.dispatch('incrementUnreadMessage'); } } }; </script> ``` 3. **触发角标更新**:当你收到新的微信消息时,调用`handleNewMessage`方法增加`unreadMessageCount`。 4. **样式设计**:为了模仿微信角标的效果,你可能需要CSS样式来调整角标的外观和位置。这通常包括在某个元素上添加`badge`或`notification-count`等类名,并为其设置适当的样式。 注意:实际操作时可能还需要处理刷新浏览器或关闭窗口后的角标清零等场景。以上只是一个基础的指导,实际开发中可能还需根据你的需求进行定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值