公众号 菜单 代码 php,如何使用Vue.js实现微信公众号菜单编辑器(案例代码)
这次给大家带来如何使用Vue.js实现微信公众号菜单编辑器(案例代码),使用Vue.js实现微信公众号菜单编辑器的注意事项有哪些,下面就是实战案例,一起来看一下。
实现菜单删除方法
在vue实例中添加删除菜单方法,根据选中的菜单级别和索引来删除。methods: {
//删除菜单
delMenu:function(){
//删除主菜单
if(this.selectedMenuLevel()==1&&confirm('删除后菜单下设置的子菜单也将被删除')){
if(this.selectedMenuIndex===0){
this.menu.button.splice(this.selectedMenuIndex, 1);
this.selectedMenuIndex = 0;
}else{
this.menu.button.splice(this.selectedMenuIndex, 1);
this.selectedMenuIndex -=1;
}
if(this.menu.button.length==0){
this.selectedMenuIndex = ''
}
//删除子菜单
}else if(this.selectedMenuLevel()==2){
if(this.selectedSubMenuIndex===0){
this.menu.button[this.selectedMenuIndex].sub_button.splice(this.selectedSubMenuIndex, 1);
this.selectedSubMenuIndex = 0;
}else{
this.menu.button[this.selectedMenuIndex].sub_button.splice(this.selectedSubMenuIndex, 1);
this.selectedSubMenuIndex -= 1;
}
if(this.menu.button[this.selectedMenuIndex].sub_button.length==0){
this.selectedSubMenuIndex = ''
}
}
},
}
将方法绑定了菜单编辑界面
{{menu.button[selectedMenuIndex].name}}
删除菜单
检查菜单名称输入长度
用v-model指令在输入框绑定菜单名,@input监听输入事件来检查输入的菜单名长度,超出上限则显示提示data:{
menuNameBounds:false,//菜单长度超出上限标记
},
methods:{
//判断菜单名长度
checkMenuName:function(val){
if(this.selectedMenuLevel()==1&&this.getMenuNameLen(val)<=8){
this.menuNameBounds=false
}else if(this.selectedMenuLevel()==2&&this.getMenuNameLen(val)<=16){
this.menuNameBounds=false
}else{
this.menuNameBounds=true
}
},
//获取字符串中文字符长度
getMenuNameLen: function (val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i);
a.match(/[^\x00-\xff]/ig) != null?len += 2:len += 1;
}
return len;
}
}
添加菜单编辑界面和事件监听
v-model指令用来绑定菜单名输入框的值,@input监听输入事件来检查输入的菜单名长度,长度超出上线则显示提示
菜单名称
字数超过上限
字数不超过4个汉字或8个字母
截图工具不显示删除的弹框,将就一下吧...
实现选择菜单类型方法
微信菜单有多种类型所以需要做个下拉列表,选中下拉项后显示该项的内容
先给每个菜单添加下类型data:{
"menu": {
"button": [
{
"type": "click",
"name": "主菜单1",
"key": "测试key",
"sub_button": []
},
{
"name": "主菜单2",
"sub_button": [
{
"type": "view",
"name": "子菜单",
"url": "https://cn.vuejs.org/v2/guide/"
}]
},
{
"name": "主菜单3",
"sub_button": [
{
"type": "view",
"name": "子菜单",
"url": "https://cn.vuejs.org/v2/guide/"
}
}]
}
}
创建的下拉列表也使用v-model指令来绑定选中的菜单类型//获取菜单类型 1. view网页类型,2. media_id类型和view_limited类型 3. click点击类型,4.miniprogram表示小程序类型
methods: {
selectedMenuType: function () {
switch (this.menu.button[this.selectedMenuIndex].type) {
case 'view':return 1;
case 'media_id':return 2;
case 'click':return 3;
case 'miniprogram':return 4;
}
}
}
菜单内容
跳转网页(view)
发送消息(media_id)
打开指定小程序(miniprogram)
自定义点击事件(click)
用于消息接口推送,不超过128字节
菜单KEY值
菜单的添加、编辑、删除功能基本完成了,总结一下学习到的知识数组对象的修改使用Vue的变异方法参考
阻止事件冒泡使用Vue的事件修饰符参考
在切换菜单类型会有一些没有声明属性,但vue初始化实例后不会监听没有声明的属性,所以要使用Vue.set方法来将属性添加到菜单对象上参考
弹窗组件使用的是layer
素材列表使用的模版是art-template
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
公众号 菜单 代码 php,如何使用Vue.js实现微信公众号菜单编辑器(案例代码)相关推荐
- 微信公众平台菜单编辑php,如何使用Vue.js实现微信公众号菜单编辑器(思路详解)...
这次给大家带来如何使用Vue.js实现微信公众号菜单编辑器(思路详解),使用Vue.js实现微信公众号菜单编辑器的注意事项有哪些,下面就是实战案例,一起来看一下. 学习一段时间Vue.js,于是想尝试 ...
- 微信公众平台菜单编辑php,Vue.js实现微信公众号菜单编辑器步骤详解(上)
这次给大家带来Vue.js实现微信公众号菜单编辑器步骤详解(上),Vue.js实现微信公众号菜单编辑器的注意事项有哪些,下面就是实战案例,一起来看一下. 学习一段时间Vue.js,于是想尝试着做一个像 ...
- 微信公众号菜单html5,Vue.js 实现微信公众号菜单编辑器功能(一)
学习一段时间Vue.js,于是想尝试着做一个像微信平台里那样的菜单编辑器,在这里分享下 具体样式代码查看项目github 创建一个vue实例 var app = new Vue({ el: '#app ...
- vue.js 在微信公众号内实现视频播放
环境:我司从事在线教育行业,想要将老师的讲课视频实现在线播放并监控用户播放时长 关键词:vue.js.微信公众号.video视频播放 1. 微信公众号内可以直接使用video进行视频播放 2. 微信公 ...
- 纯代码实现WordPress文章部分内容关注微信公众号后可见
前言 最新有小伙伴问我一个问题,像辉哥博客有些文章是用的关注微信公众号并回复指定内容后获取验证码才能查看文章的部分内容是怎么实现的,今天辉哥就教你纯代码实现WordPress文章部分内容关注微信公众号 ...
- php微信公众号支付vue,vue项目使用微信公众号支付总结及遇到的坑
微信公众号支付 1. 使用jssdk调用微信支付,具体查看开发文档: 使用的vuex,在mutations中 wechatPay (state, data) { state.payObject = d ...
- 【Node.js 微信公众号实战】1.Node.js 接入微信公众平台开发
文章目录: 1.Node.js 接入微信公众平台开发 2.Node.js access_token的获取.存储及更新 3.Node.js 自定义微信菜单 ...
- Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发
接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...
- 教你如何用node.js开发微信公众号(一)
内容简介 本文章简单介绍了如何用node.js开发微信公众号.主要内容包括微信公众平台的配置,signature的验证,以及用node.js去处理用户主动发起的行为. 准备工作 开发前需要安装好nod ...
最新文章
- python selenium p_Python爬虫(二十一)_Selenium与PhantomJS
- CreateProcess error = 2,系统找不到指定的文件
- 文献引用的标准格式_外语论文文献引用格式—APA Style
- InnoDB之Dirty Page、Redo log
- 【Java】多线程编程
- mysql deadlock 记录_MySQL DeadLock故障排查全过程记录
- 修改msde登录方式,设置sa密码为空
- 线程同步:喂,SHE
- java分布式框架_5个强大的Java分布式缓存框架推荐
- 比特红:万物可直播、人人能带货
- 【使用51单片机驱动1.54英寸墨水屏做一个简洁的贪吃蛇游戏】
- 《东周列国志》第三十七回 介子推守志焚绵上 太叔带怙宠入宫中
- 软件环境常识 --dev sit uat
- 5G中大规模MIMO系统通信的若干分析
- C#实现简单音乐播放器
- 四川农业大学计算机考研调剂,四川农业大学调剂基本条件
- 这篇文章来告诉你几个实用的视频转文字的方法
- 基于html5手机移动端对话框特效
- Matlab2018a崩溃解决的办法No sandbox or build area path
- python 的numpy库中的mean()函数用法介绍
热门文章
- Linux 后台运行与输出
- Linux 获取上个月的第一秒和上个月的最后一秒
- MATLAB学习——MATLAB矩阵处理
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- 中山大学南方学院计算机教师,中山大学南方学院教师被举报性侵女生 校方:已开除...
- 吃大亏了!游戏美术行业真的是传说中的一入职就能领高薪吗?
- 读后笔记之《[科普文] 什么是网络流量劫持?揭秘详解黑客劫持的攻击手段与防御方法》
- 【微博SDK调用逻辑】微博SDK的调用逻辑,最好自己还是写一个例子,试一下!!!...
- Python 从业十年是种什么体验?
- 转载http://www.blogjava.net/hadeslee/archive/2007/10/05/j3d1.html