- 未对变量主动进行更改,变量值发生变化
详见代码片段,或者下面的源代码,不知为何复制过来没缩进,搞缩进又太麻烦了,屌大的各位可以复制到IDE里再格式化以下方便查看,先谢谢大家了 以下为源代码 wxs部分: [代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]do_not_care_me:[代码][代码]'这里有一个问题,理论上切换标签筛选数据时是从all数组中抽出来几个再进行处理,不可能会影响到all变量中的数据的,然而在这里却造成了影响,不知为何,麻烦屌大的各位看看'[代码][代码],[代码][代码] [代码][代码]//全部的基础数据,本来是从服务器获取的,这里将数据简化并作为初始变量[代码][代码] [代码][代码]all: [{[代码][代码] [代码][代码]serial: [代码][代码]'201905080001'[代码][代码],[代码][代码] [代码][代码]state: [代码][代码]'finished'[代码][代码],[代码][代码] [代码][代码]type: [代码][代码]'0001'[代码][代码],[代码][代码] [代码][代码]time: [代码][代码]'10:00:00'[代码][代码] [代码][代码]}, {[代码][代码] [代码][代码]serial: [代码][代码]'201905080002'[代码][代码],[代码][代码] [代码][代码]state: [代码][代码]'working'[代码][代码],[代码][代码] [代码][代码]type: [代码][代码]'0003'[代码][代码],[代码][代码] [代码][代码]time: [代码][代码]'11:00:00'[代码][代码] [代码][代码]}, {[代码][代码] [代码][代码]serial: [代码][代码]'201905080003'[代码][代码],[代码][代码] [代码][代码]state: [代码][代码]'failed'[代码][代码],[代码][代码] [代码][代码]type: [代码][代码]'0002'[代码][代码],[代码][代码] [代码][代码]time: [代码][代码]'12:00:00'[代码][代码] [代码][代码]}, {[代码][代码] [代码][代码]serial: [代码][代码]'201905080004'[代码][代码],[代码][代码] [代码][代码]state: [代码][代码]'canceled'[代码][代码],[代码][代码] [代码][代码]type: [代码][代码]'0003'[代码][代码],[代码][代码] [代码][代码]time: [代码][代码]'13:00:00'[代码][代码] [代码][代码]}, {[代码][代码] [代码][代码]serial: [代码][代码]'201905080005'[代码][代码],[代码][代码] [代码][代码]state: [代码][代码]'finished'[代码][代码],[代码][代码] [代码][代码]type: [代码][代码]'0002'[代码][代码],[代码][代码] [代码][代码]time: [代码][代码]'14:00:00'[代码][代码] [代码][代码]}],[代码][代码] [代码][代码]//要展示的数据,这里只是保存到这个变量中[代码][代码] [代码][代码]show: [代码][代码]null[代码][代码],[代码][代码] [代码][代码]//当前选中的标签,默认值是全部[代码][代码] [代码][代码]select: [代码][代码]'all'[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onLoad() {[代码][代码] [代码][代码]// 由于一开始就将数据展示就会导致all变量发生改变,这里先将其注释[代码][代码] [代码][代码]// this.show(this.data.all)[代码][代码] [代码][代码]},[代码][代码] [代码][代码]select(e) {[代码][代码] [代码][代码]//这块仅仅是为了更改上面的标签颜色[代码][代码] [代码][代码]let select = e.target.id[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]select: select[代码][代码] [代码][代码]})[代码][代码] [代码][代码]//下面是筛选要展示的数据[代码][代码] [代码][代码]let show_list = [][代码][代码] [代码][代码]let all = [代码][代码]this[代码][代码].data.all[代码][代码] [代码][代码]for[代码] [代码](let key [代码][代码]in[代码] [代码]all) {[代码][代码] [代码][代码]if[代码] [代码](all[key].state == select || select == [代码][代码]'all'[代码][代码]) {[代码][代码] [代码][代码]//将满足条件的数据添加到这个数组中,用于后续修改[代码][代码] [代码][代码]//方法1[代码][代码] [代码][代码]// show_list.push(all[key])[代码][代码] [代码][代码]//方法2[代码][代码] [代码][代码]let temp = all[key][代码][代码] [代码][代码]show_list.push(temp)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]//将筛选好的数据通过show函数处理[代码][代码] [代码][代码]this[代码][代码].show(show_list)[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]show(show_list) {[代码][代码] [代码][代码]//将要展示的基础数据进行加工一下,使原始数据能够用于展示[代码][代码] [代码][代码]for[代码] [代码](let i = 0; i < show_list.length; i++) {[代码][代码] [代码][代码]switch[代码] [代码](show_list[i].state) {[代码][代码] [代码][代码]case[代码] [代码]'waiting'[代码][代码]:[代码][代码] [代码][代码]show_list[i][[代码][代码]'state'[代码][代码]] = [代码][代码]'等待中...'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_type'[代码][代码]] = [代码][代码]'waiting'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_color'[代码][代码]] = [代码][代码]''[代码][代码] [代码][代码]break[代码][代码] [代码][代码]case[代码] [代码]'working'[代码][代码]:[代码][代码] [代码][代码]show_list[i][[代码][代码]'state'[代码][代码]] = [代码][代码]'跑步中...'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_type'[代码][代码]] = [代码][代码]'waiting'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_color'[代码][代码]] = [代码][代码]'rgb(10,186,7)'[代码][代码] [代码][代码]break[代码][代码] [代码][代码]case[代码] [代码]'finished'[代码][代码]:[代码][代码] [代码][代码]show_list[i][[代码][代码]'state'[代码][代码]] = [代码][代码]'已完成'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_type'[代码][代码]] = [代码][代码]'success'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_color'[代码][代码]] = [代码][代码]''[代码][代码] [代码][代码]break[代码][代码] [代码][代码]case[代码] [代码]'canceled'[代码][代码]:[代码][代码] [代码][代码]show_list[i][[代码][代码]'state'[代码][代码]] = [代码][代码]'已取消'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_type'[代码][代码]] = [代码][代码]'clear'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_color'[代码][代码]] = [代码][代码]'orange'[代码][代码] [代码][代码]break[代码][代码] [代码][代码]case[代码] [代码]'failed'[代码][代码]:[代码][代码] [代码][代码]show_list[i][[代码][代码]'state'[代码][代码]] = [代码][代码]'失败'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_type'[代码][代码]] = [代码][代码]'warn'[代码][代码] [代码][代码]show_list[i][[代码][代码]'icon_color'[代码][代码]] = [代码][代码]''[代码][代码] [代码][代码]break[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]//将处理好的数据同步到视图层[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]show: show_list[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码]})[代码]wxs部分: [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'select'[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'{{select=="all"?"selected":"unselected"}}'[代码] [代码]bindtap[代码][代码]=[代码][代码]'select'[代码] [代码]id[代码][代码]=[代码][代码]'all'[代码][代码]>全部</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'{{select=="finished"?"selected":"unselected"}}'[代码] [代码]bindtap[代码][代码]=[代码][代码]'select'[代码] [代码]id[代码][代码]=[代码][代码]'finished'[代码][代码]>已完成</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'{{select=="canceled"?"selected":"unselected"}}'[代码] [代码]bindtap[代码][代码]=[代码][代码]'select'[代码] [代码]id[代码][代码]=[代码][代码]'canceled'[代码][代码]>已取消</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'{{select=="failed"?"selected":"unselected"}}'[代码] [代码]bindtap[代码][代码]=[代码][代码]'select'[代码] [代码]id[代码][代码]=[代码][代码]'failed'[代码][代码]>失败</[代码][代码]view[代码][代码]>[代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]<[代码][代码]view[代码][代码]>下面就是简单的展示一下</[代码][代码]view[代码][代码]>[代码][代码]<[代码][代码]view[代码] [代码]wx:for[代码][代码]=[代码][代码]'{{show}}'[代码][代码]>{{item.serial}}</[代码][代码]view[代码][代码]>[代码][代码]<[代码][代码]view[代码][代码]>{{do_not_care_me}}</[代码][代码]view[代码][代码]>[代码]wxss部分: [代码].select {[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]45px[代码][代码];[代码][代码] [代码][代码]width[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码] [代码][代码]display[代码][代码]: flex;[代码][代码] [代码][代码]flex-[代码][代码]direction[代码][代码]: row;[代码][代码] [代码][代码]justify-[代码][代码]content[代码][代码]: flex-start;[代码][代码] [代码][代码]align-items: [代码][代码]center[代码][代码];[代码][代码] [代码][代码]overflow[代码][代码]: [代码][代码]scroll[代码][代码];[代码][代码] [代码][代码]border-bottom[代码][代码]: [代码][代码]1px[代码] [代码]solid[代码] [代码]#ddd[代码][代码];[代码][代码]}[代码] [代码].unselected {[代码][代码] [代码][代码]margin[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]font-size[代码][代码]: [代码][代码]13px[代码][代码];[代码][代码] [代码][代码]line-height[代码][代码]: [代码][代码]26px[代码][代码];[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]26px[代码][代码];[代码][代码] [代码][代码]width[代码][代码]: [代码][代码]70px[代码][代码];[代码][代码] [代码][代码]border[代码][代码]: [代码][代码]1px[代码] [代码]solid[代码] [代码]#ddd[代码][代码];[代码][代码] [代码][代码]border-radius: [代码][代码]14px[代码][代码];[代码][代码] [代码][代码]margin-left[代码][代码]: [代码][代码]14px[代码][代码];[代码][代码] [代码][代码]text-align[代码][代码]: [代码][代码]center[代码][代码];[代码][代码] [代码][代码]flex-shrink: [代码][代码]0[代码][代码];[代码][代码]}[代码] [代码].selected {[代码][代码] [代码][代码]margin[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]font-size[代码][代码]: [代码][代码]13px[代码][代码];[代码][代码] [代码][代码]line-height[代码][代码]: [代码][代码]28px[代码][代码];[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]28px[代码][代码];[代码][代码] [代码][代码]width[代码][代码]: [代码][代码]72px[代码][代码];[代码][代码] [代码][代码]border-radius: [代码][代码]14px[代码][代码];[代码][代码] [代码][代码]margin-left[代码][代码]: [代码][代码]14px[代码][代码];[代码][代码] [代码][代码]text-align[代码][代码]: [代码][代码]center[代码][代码];[代码][代码] [代码][代码]flex-shrink: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]background-color[代码][代码]: [代码][代码]#33b9e6[代码][代码];[代码][代码] [代码][代码]border[代码][代码]: [代码][代码]0px[代码][代码];[代码][代码] [代码][代码]color[代码][代码]: [代码][代码]white[代码][代码];[代码][代码]}[代码]
2019-05-08 - progress可以设置动画时长吗?
因为我想做模拟浏览器进度条功能,需要在发起请求的时候进度条进度缓慢,等请求回来后,在很短的时间(如0.5秒或更短)到达终点。
2018-03-05 - 发现几个一年都未修复的bug
第一个:swiper滑动快了必卡死,current会被清零 第二个:视频卡顿,尤其是阿里云点播服务,在其他端都是正常的。 第三个:setData频繁会导致小程序卡顿,性能比较弱 欢迎补充
2019-02-15 - swiper定制tab切换频繁出现鬼畜现象
- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 正常速度切换“首页”,“通讯录”,“发现”,“我的”四个tab键切换至对应内容是没有问题的; - 复现路径 当速度足够快的点击某两个tab键(比如首页和通讯录,可以用两个手指来回快速点击首页和通讯录),页面就开始闪烁抖动,基本100%复现; - 提供一个最简复现 Demo WXML: <view class="flex-row" style="display: flex;"> <view class="{{currentTab==0 ? 'flex-view-item1' : 'flex-view-item'}}" bindtap="tap0">首页</view> <view class="{{currentTab==1 ? 'flex-view-item1' : 'flex-view-item'}}" bindtap="tap1">通讯录</view> <view class="{{currentTab==2 ? 'flex-view-item1' : 'flex-view-item'}}" bindtap="tap2">发现</view> <view class="{{currentTab==3 ? 'flex-view-item1' : 'flex-view-item'}}" bindtap="tap3">我的</view> </view> <swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 31}}px" bindchange="bindChange"> <!-- 我是哈哈 --> <swiper-item> <view>我是《首页》</view> </swiper-item> <!-- 我是呵呵 --> <swiper-item> <view>我是《通讯录》</view> </swiper-item> <!-- 我是嘿嘿 --> <swiper-item> <view>我是《发现》</view> </swiper-item> <!-- 我是哼哼--> <swiper-item> <view>我是《我的》</view> </swiper-item> </swiper> WXSS: /*按钮所在容器的属性设置*/ .flex-row { display: flex; flex-direction: row; align-items: center; justify-content: space-between; } /*按钮默认状态下属性*/ .flex-view-item { width: 20%; height: 50px; background-color: #ffa589; text-align: center; } /*按钮选中状态下属性*/ .flex-view-item1 { width: 20%; height: 50px; background-color: #ff5400; text-align: center; } JS: Page({ data:{ currentTab : 0 //初始化currentTab=0 }, //第1个按钮点击事件,修改currentTab值 tap0:function(event){ this.setData({ currentTab: 0 }); }, // 第2个按钮点击事件,修改currentTab值 tap1:function(event){ this.setData({ currentTab: 1 }); }, // 第3个按钮点击事件,修改currentTab值 tap2:function(event){ this.setData({ currentTab: 2 }); }, // 第4个按钮点击事件,修改currentTab值 tap3:function(event){ this.setData({ currentTab: 3 }); }, // swiper滑动事件,修改currentTab值,实现切换tab bindChange: function( e ) { var that = this; that.setData( { currentTab: e.detail.current }); }, })
2019-03-09 - drawImage的问题 关于图片等比缩放 真机预览缩小不正确 放大是正确的
官方文档中 drawImage(sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 从 1.9.0 起支持 number dx图像的左上角在目标 canvas 上 x 轴的位置 number dy图像的左上角在目标 canvas 上 y 轴的位置 number dWidth在目标画布上绘制图像的宽度,允许对绘制的图像进行缩放 number dHeight在目标画布上绘制图像的高度,允许对绘制的图像进行缩放 number sx源图像的矩形选择框的左上角 x 坐标 number sy源图像的矩形选择框的左上角 y 坐标 number sWidth源图像的矩形选择框的宽度 number sHeight源图像的矩形选择框的高度 然而真实调用的结果是 [图片] 开发工具显示正常 [图片] 手机上的效果 如果没有理解错的话sWidth, sHeight这两个参数是类似选择图片时的裁剪功能 裁剪的宽度和高度,裁剪是正确的,但是手机预览确不能根据画框等比缩小,放大是正常的 有没有遇到相同问题的而且已经解决的 或者是我理解错了
2018-10-24 - canvas 生成图片 模糊
根据手机屏幕宽度设定canvas的宽度 根据9:16的比例设置高度 绘画出图像 保存图片 尺寸(不知道这么设置对不对) destWidth等于canvas宽度 destHeight等于canvas高度 width等于canvas宽度 height等于canvas高度 保存后的图片非常模糊,由于上面绘制小程序码 根本就扫不出来 不知道如何设置不模糊
2019-02-15 - ES6 await, async 用不了
ES6 await, async 用不了,报“ regeneratorRuntime is not defined ”
2018-10-08 - wx.setStorageSync使用异常
使用 wx.setStorageSync 接口时,会有下面2种错误记录: Error: APP-SERVICE-SDK:setStorageSync:fail Error: APP-SERVICE-SDK:setStorageSync:fail set DB data fail 请问是什么可能是原因呢?
2017-07-13 - 分享操作,在开发者工具和真机调试表现不一致
分享操作: 在开发者工具上,只执行 onShareAppMessage 方法。 在真机调试时,除了执行 onShareAppMessage 方法,还会执行 app的onHide等方法。 这类内部执行原理在文档上并没有说明,不一致的表现给开发带来很大困扰。担心在真实环境中会不会是第三种情况? [图片]
2018-12-26 - 有关于全局app.onLaunch 与 page.onLoad 之间异步请求;
app.js App({ onLaunch: function () { console.log("onLaunch"); //发送异步请求,请求结果没有返回时等待 //请求结果返回,执行onShow }, onShow: function () { console.log("onShow"); //执行完onShow后加载首页 }, onHide: function () { console.log("onHide"); }, onError: function (msg) { console.log("onError"); } }); index.js Page({ data:{ }, onLoad:function(options){ //发送异步请求,请求参数中包含app.js中的返回结果 }, onReady:function(){ // 页面渲染完成 }, onShow:function(){ // 页面显示 }, onHide:function(){ // 页面隐藏 }, onUnload:function(){ // 页面关闭 } }); -----现在问题: 我生成了二维码.我用微信自带扫一扫 一扫二维码进来首先 我app.onLaunch都还没执行完; 就调度了我扫一扫的api. wx.request没有同步请求; 但是我扫一扫之后必须要有用户信息.我才能完成我扫二维码之后的业务逻辑; 请求解决问题~ 谢谢~
2017-10-20