推荐 最新
复古直男

在小程序中,柱图数据过多时,如何配置横向滚动条?

在飞书小程序中使用VChart时,柱图数据过多时,如何配置横向滚动条?

19
1
0
浏览量379
金刚老六

为什么我的小程序没有“长期订阅”?

我以个人身份申请了一个微信小程序,在:基础功能 > 订阅消息 > 公共模板库 > 长期订阅 显示没有可用模板。是什么原因导致我没有长期订阅的可用模板?是企业认证才有的吗?还有个疑问是不是小程序推送的模板消息在用户微信上是显示在“服务通知”中,所有小程序的通知都被集中在这里,有没有方法可以单独显示一个小程序的通知(就像服务号一样)

16
1
0
浏览量333
全能人才

uniapp中,为什么跳转回tabBar页面就无法接收监听?

onBLECharacteristicValueChange这个监听的文档地址:"https://uniapp.dcloud.net.cn/api/system/ble.html#onblecharact..." (https://link.segmentfault.com/?enc=GKkJqIhNuv1UQh3TuUWGMw%3D%3D.3hHcXCmYfjCW%2BpuLCWENJtl2SCoIYCRg4cGNzRgi1CVHxo3yj8%2FOBJrz9gWlfCL6VbnQFjwUTs7kIGc%2FmwOg5kLcxRIbLmHO0%2Bwl9IAuCGk%3D) 无论在哪个页面都能收到这个api的监听,唯独跳转回主页tabBar页面监听就没了,所以这个监听本身应该是没问题的?只是不知道返回主页的tabBar页面有什么我不知道的机制导致监听失效, 我把这个监听放在APP.VUE的onLaunch里面,但实际上不管放在哪个页面(除主页外)的效果都和上述一致。 求教大神们是哪里出问题了,用了几个跳转的api都不行↓ this.$u.route({ url: 'pages/index/index', type: 'tab', }) uni.switchTab({ url: '/pages/index/index' }); 小弟在这里先感谢各位大神们,感激不尽,祝大神们发财祝大神们取漂亮老婆

17
1
0
浏览量282
ZZZ葡萄皮

用taro写的小程序,在用ios手机调试页面白屏?

用的taro开发的小程序, 然后再微信开发者工具用真机调试, android的手机扫码之后正常展示页面, 但是用ios手机扫码,页面白屏,只显示title 页面中留的log也不打印, 控制台也没报错 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/f2c88adf2486406872379a2a3ddd287d.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/290dd43f3003061d4db2255280eb7ad1.png)

15
1
0
浏览量325
0offer糕手

请问小程序开发中,遇到一个不知道怎么处理的事,想请大家帮忙给个思路?

"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/de4586d1f34df9af653bf2bf1693b791.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/eb171d3e08e7d98df52802d533c1811d.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/192b89846069f34136261007cbc44a16.png) 我有上图三个页面,跳转逻辑依次排列, 当我到第三张图,开始地图选点的时候 选择完点击确认选点,这里会自动回到图2,也就是选择收货地址页面,然后在图2的onshow生命周期中接受选择的位置信息数据, 但是实际上我是想直接回到图1的,并把数据传过去的, 当在地图选点页面点击确认选点后,我在图2的onshow 生命周期中写了如下代码: onShow: function onShow() { const chooseLocation = requirePlugin('chooseLocation'); const location = chooseLocation.getLocation(); console.log(location,'location89898') // var map_city = wx.getStorageSync('map_city'); // wx.setStorageSync('map_city', location); if(location != undefined){ // var pages = getCurrentPages(); // var prevpage = pages[pages.length - 2]; // prevpage.setData({ // back_latitude: location.latitude, // back_longitude: location.longitude, // back_addrss_all:location.address // }); wx.setStorageSync('map_city', location); // wx.switchTab({ // url: '/pages/my_city/index' // }); // wx.navigateBack({ // //返回 // delta: 2 // }) } } 我是用了两种方法, 一种是在图2 onshow生命周期中本地存储数据,然后再wx.switchTab回到图1 还有一种就是在图2 onshow生命周期中 直接通过prevpage.setData 传递参数 然后直接返回前两页 wx.navigateBack({ delta: 2 }) 这两种方法都能让我在图1 接收到数据,但是有个问题就是,因为我在图2的生命周期中,加了返回页面或者直接wx.switchTab回到图1 但是我发现,图2的onshow 接收的数据会一直缓存,我现在无法再通过图1点击回到图2,因为始终会触发返回图1的事件,这种情况,不知道到底如何处理比较合适,清除本地存储 感觉也不合适,不知道小程序有什么类似清除onshow生命周期的缓存的方法吗?

16
1
0
浏览量219
Ned

微信小程序授权登录、授权手机号

前言最近写了一个小程序项目,原本只做用户授权登录,但是现在微信官方禁止小程序通过wx.getUserProfile 接口获取用户真正的头像和昵称,用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”,为了区分用户,因此又做了授权获取用户手机号。总结一下实现过程以及遇到的问题。授权登录逻辑及具体实现1.调用 wx.login() 获取 临时登录凭证code(只能使用一次) ,存储到本地,并设为全局变量// 在全局app.js文件中,如果不存在用户token,就调用登录方法 login(){ // 登录 wx.login({ success: res => { console.log(res) // code存缓存,用于之后的请求 wx.setStorageSync('loginCode', res.code) this.globalData.code = res.code; } }) },2.在需要登录的页面,点击登录按钮,通过调用接口 wx.getUserProfile 获取用户信息,该接口接口会同时返回 rawData、signature、iv、encryptedData,将这些数据和临时登录凭证code回传到开发者服务器。服务端进行验证或者注册之后返回token,表示登录成功,前端存储返回的用户信息和token授权用户信息接口返回数据的说明:// 在需要登录页面的js文件中,调用 wx.getUserProfile 接口 wx.getUserProfile({ desc: '授权登录', success: res => { console.log(res) if (res.errMsg == 'getUserProfile:ok') { // 登录信息传给后台 $api.userLogin({ code: app.globalData.code, rawData: res.rawData, signature: res.signature, iv: res.iv, encryptedData: res.encryptedData }) .then(res => { //请求成功,缓存用户信息,同步全局变量 ... }) .catch(err => { //请求失败 console.log(err) }) } } })3.授权手机号目前微信小程序需要用户主动触发才能发起获取手机号接口,需用 button 组件的点击来触发(新版本接口不再需要提前调用wx.login进行登录)。使用方法:将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到动态令牌code,然后把code传到开发者后台(后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号),返回用户手机号。<button class="loginBtn" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">确定</button>getPhoneNumber(e) { if (e.detail.errMsg === "getPhoneNumber:ok") { // 同意授权绑定手机号 $api.getPhoneNumber({ code: e.detail.code, }) .then(res => { //请求成功 this.setData({ phone: res.data.phone, }) }) .catch(err => { //请求失败 }) } else if (e.detail.errMsg === "getPhoneNumber:fail user deny") { //拒绝授权绑定手机号 } },注:1.每个code有效期为5分钟,且只能消费一次 2.getPhoneNumber 返回的 code 与 wx.login 返回的 code 作用是不一样的,不能混用。问题:点击登录按钮,需要同时授权用户信息和手机号,因为都需要主动触发(产生点击事件)后才可调用,因此把登录的bindtap 的回调事件绑定在授权手机号的 button 组件上<button class="loginBtn" bindtap="login" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">确定</button>

3
0
0
浏览量2037
无心插柳柳成萌

请问关于最新的小程序 要求9月15号之前完成配置的小程序用户隐私保护指引大家是怎样做的?

"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/d26a9421b5a89aff06b2c9eec2c14973.png) 直接在小程序首页,弹出让用户确认的框,拒绝直接退出小程序吗?

15
1
0
浏览量250
瞳孔放大黑洞

微信小程序 van-checkbox 动态赋值选中状态,偶尔无法选中的问题?

"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241222/dcb2b326c1b333b288ba29757c338d6b.png) 我在切换地址后,再点击弹出选择收货地址下拉菜单,是需要勾选选中的地址,这个大部分情况是正常的,但是不知道为什么,偶尔会出现,勾选消失的情况,索引也能找到,并且数据checked: true也赋值成功,不知道是因为什么情况?

16
1
0
浏览量215
0offer糕手

vue/uniapp中,如何在监听里监听多久没返回消息了?

在任意一个监听里,比如以下的uni.$on, 从收到消息开始,计算5秒内还有没有新的消息返回,如果5秒后还没有消息返回,那就结束这个计算, 从下一次收到消息再开始 uni.$on('getData', (obj) => { }) 小弟在这里先感谢各位大神们,感激不尽,祝大神们发财祝大神们取漂亮老婆

14
1
0
浏览量298
Ned

uniapp开发微信小程序--难点总结

1. 当前页返回上一页,实现页面数据刷新在当前页面的卸载函数中,设置上一页data对象的falg数据,根据这个falg为真,来刷新页面数据//当前页 onUnload() { let pages = getCurrentPages(); // 当前页面 let beforePage = pages[pages.length - 2]; // 上一页 beforePage.data.refreshIfNeeded = true; },// 上一页 onShow() { var pages = getCurrentPages(); // 获取当前页面栈 var currentPage = pages[pages.length - 1]; // 当前页面 if (currentPage.data.refreshIfNeeded) { currentPage.data.refreshIfNeeded = false; this.refreshMethod(); // 当前页面 method中的方法,用来刷新当前页面 } }, methods: { refreshMethod() { this.getData() }, }2. 实时展示当前年份及月份下的列表数据,切换年份或者月份实现列表数据改变1.因为月份比较多,一排占不下,所以使用swiper组件,根据current属性来控制组件的滑动。<view class="top-items cor333"> <view class="chose-year flex-align"> <view class="icon" @click="reduceyear"></view> <view class="year f34"> <text>{{currentyear}}</text>年 </view> <view class="icon next active" @click="addyear"></view> </view> <view class="chose-month f30"> <view class="page-section swiper"> <view class="page-section-spacing" > <swiper class="swiper" display-multiple-items="6" :current="current"> <swiper-item v-for="(item,index) in month" :key="index"> <view class="swiper-item" :class="(currentmonth-1) == index? 'active': ''" @click="choseMonth(item+1)">{{item+1}}月</view> </swiper-item> </swiper> </view> </view> </view> </view>2.根据new Date()方法获取当前时间;getFullYear()方法获取当前年份;getMonth()方法获取当前月份,实际月份需要加1。3.当当前月份大于6时,需要控制目前滑块索引current固定在第六个(因为swiper组件控制的同时显示的滑块数量为6个,当前月份为6时,说明实际月份为7,后面7-12月就不应该再滑动了)data() { return { month: [0,1, 2, 3,4,5,6,7,8,9,10,11], current: 2, currentmonth: '', currentyear: 2022, }; }, created() { const newDate = new Date(); const currentYear = newDate.getFullYear(); const currentMonth = newDate.getMonth(); this.currentyear = currentYear; this.currentmonth = currentMonth+1; if(currentMonth > 6){ this.current = 6 }else{ this.current = this.currentmonth - 1 } this.initData(); }, 4.滑动到最后一月,实现自动跳转下一年份;滑动到一月,实现自动跳转上一年份 首先通过@touchstart和@touchend事件确定滑动方向,触摸开始的pageX大于触摸结束的pageX,说明是向右滑动;反之向左滑动通过swiper的@animationfinish(动画结束时会触发)和@change(current 改变时会触发)事件做逻辑判断。当向右滑动,并且滑动到最后,改变当前月份、current,增加年份;当向左滑动,并且滑动到开始,改变当前月份、current,减少年份。因为第一次向右滑动到最后跳转年份正常,再次滑动到最后,current改变,但页面不再滑动到当前年份的开始位置,所以需要@change事件改变current值touchstart(e) { this.startX = e.changedTouches[0].pageX; }, touchend(e) { this.endX = e.changedTouches[0].pageX; if (this.startX > this.endX ) { this.toRight = true } else if(this.startX < this.endX ) { this.toRight = false } }, animationfinish(e) { this.isChange = false let animationCurrent = e.detail.current if (this.toRight && animationCurrent == 6) { this.currentmonth = 1 this.current = 0 this.addyear() // 写一个flag,swiper的change函数执行 this.isChange = true } else if (this.toRight == false && animationCurrent == 0) { this.currentmonth = 1 this.current = 0 this.reduceyear() } }, bindchange(e) { if (this.isChange) { this.$nextTick(() => { this.currentmonth = 1 this.current = 0 }); }else{ // change第一次正常回到第一个之后,没有改变this.current的代码始终不执行第二次 const newDate = new Date() const currentMonth = newDate.getMonth() const month = currentMonth + 1 if (currentMonth > 6) { this.current = 6 } else { this.current = month - 1 } } }3. 实现图片预览previewImage(imageURL, images) { uni.previewImage({ current: imageURL, // 当前显示图片的 http 链接 urls: images // 需要预览的图片链接列表,要求必须是数组 // loop: true // 是否可循环预览 }) }4. 列表实现展开和收起所有列表一开始都是展开的,点击不同的列表可以实现各自的展开和收起首先页面获取到数据时,给每个数据列表动态设置一个属性,控制展开和收起的状态   is_fold为真收起,为假展开this.proData.forEach(pro => { this.$set(pro,'is_fold',false) })2. 点击每个列表时,根据id判断是否为当前列表,改变is_fold属性,控制当前列表的状态showLists(proId){ this.proData.forEach(pro => { if(pro.id == proId){ const value = !pro.is_fold this.$set(pro,'is_fold',value) } }) },

0
0
0
浏览量2024