sf问答精选《三》点击展开再次点击收回,setData

本文内所有问答,均选自sf.gg网站内相关问答; 问题: 微信小程序怎么做 RSA 加密? 之前在网页端 RSA 加密密码用的 JSEncrypt现在要移植到微信小程序,由于 JSEncrypt 会使用到 window 对象,所以无法在小程序中使用 …

     

本文内所有问答,均选自sf.gg网站内相关问答; 
问题: 
微信小程序怎么做 RSA 加密? 
之前在网页端 RSA 加密密码用的 JSEncrypt 
现在要移植到微信小程序,由于 JSEncrypt 会使用到 window 对象,所以无法在小程序中使用。 
(微信小程序的)页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件。 
有人遇到过这样的需求或者问题么?

答:color_cat

加密怎么会和window对象扯上关系,我用的rsa是这个http://www.ohdave.com/rsa/

问题: 
求教怎么更改微信小程序中app.js的 globalData 属性、值? 
app.js中其中的globalData中的userInfont属性、值要怎么设置和改变?求教高手、大虾们 
答:StudyMachine

在page的js中,声明 
var app = getApp(); 
之后就可以直接使用globalData,如: 
app.globalData.userInfo = openid; 
当然,App()里面的其他属性,方法都可以使用了

问题: 
关于微信小程序 wx.request 的1个问题与1个吐槽 
吐槽:wx.request 没有async属性,不支持同步请求,坑。 
问题:wx.request 发出请求后,无论请求接口返回的 HTTP 状态码(200,500)是什么,都会进入 success 回调,什么时候会回调 fail ? 
答:小_秦

同步卡界面, 所以为什么要使用同步? 
进 fail 的情况如下(根据小程序的IDE中的代码得出): 
一. 当 wx.request 被调用时, 队列已经满了的时候触发. 

(此图片来源于网络,如有侵权,请联系删除! )

 

二. 当内部调用 checkUrl checkTLS 返回不成功时触发. 


(此图片来源于网络,如有侵权,请联系删除! )

 

三. 默认情况下请求超过 30 秒后还没返回时触发. 


(此图片来源于网络,如有侵权,请联系删除! )

(此图片来源于网络,如有侵权,请联系删除! )

(此图片来源于网络,如有侵权,请联系删除! )

 

后面的就不列了, 如果你需要了解,你可以查看 

“C:\Program Files (x86)\Tencent\微信web开发者工具\package.nw\app\dist\weapp\appservice\asdebug.js” 

这个文件中关于 request 的源代码. 

上面的路径可能在你那边不太一样, 请自行找到 asdebug.js. 

建议不使用同步、可以使用promise配合Toast类蒙版、promise处理异步、让异步顺序等待执行就好了

问题: 
小程序setData

 


  1. data: {
  2.  
  3. channelList: [{
  4.  
  5. channelName: "aaa",
  6.  
  7. channelId: "0",
  8.  
  9. resList: [{
  10.  
  11. title: 'aaa_111',
  12.  
  13. imgUrl: 'http://...',
  14.  
  15. des: 'blabla...'
  16.  
  17. },{
  18.  
  19. title: 'aaa_222',
  20.  
  21. imgUrl: 'http://...',
  22.  
  23. des: 'blabla...'
  24.  
  25. },...]
  26.  
  27. }, {
  28.  
  29. channelName: "bbb",
  30.  
  31. channelId: "12345",
  32.  
  33. resList: [{
  34.  
  35. title: 'bbb_111',
  36.  
  37. imgUrl: 'http://...',
  38.  
  39. des: 'blabla...'
  40.  
  41. },{
  42.  
  43. title: 'bbb_222',
  44.  
  45. imgUrl: 'http://...',
  46.  
  47. des: 'blabla...'
  48.  
  49. },...]
  50.  
  51. }, {
  52.  
  53. channelName: "ccc",
  54.  
  55. channelId: "4567",
  56.  
  57. resList: []
  58.  
  59. },...]
  60.  
  61. }

类似这种结构的Data,想给channelId:12345的resList增加数据,现在做法是:

 


  1. var channelList = this.data.channelList;
  2.  
  3. for (let i = 0; i < channelList.length; i++) {
  4.  
  5. if (channelList.channelId == '12345') {
  6.  
  7. channelList.resList.concat(arr)
  8.  
  9. }
  10.  
  11. }
  12.  
  13. this.setData({
  14.  
  15. channelList:channelList
  16.  
  17. })

问题是:  1.感觉写的复杂了,有没有简便的方法?  2.channelList的数据比较多,仅仅因为修改某一个部分,就通过setData更新了整个channelList数据,会不会明显影响性能? 

(此图片来源于网络,如有侵权,请联系删除! )

  答:小_秦,回答地址

你可以直接在key上写好它的完整路径, 然后来 setData  官方说明:  https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/page.html 

(此图片来源于网络,如有侵权,请联系删除! )

  DMEO: 

(此图片来源于网络,如有侵权,请联系删除! )

 

(此图片来源于网络,如有侵权,请联系删除! )

效果: 

(此图片来源于网络,如有侵权,请联系删除! )

 

(此图片来源于网络,如有侵权,请联系删除! )

互动部分:

非常感谢你的回答和demo,之前有想过这种写法,困惑的是如何将变量写入key。刚才尝试了一下也解决了:  this.setData({[myKey]: ‘bbb’});  这种写法需要浏览器支持es6,或者是开启es6转es5的功能(通常情况下转换后的代码会有点长).  所以还有一种方法也可以达到效果.

 


  1. var data = {};//在这里使用变量 拼接要改变的 keydata['xxx' + yyy + 'zzz'] = 'bbb'; //DEMOthis.setData(data);

问题:  微信小程序点击展开,再次点击收回类似这种,小白一个没思路,求大神贴个demo给我学习一下好么 

(此图片来源于网络,如有侵权,请联系删除! )

答:HaoyCn

没有Demo, 提供思路:  小程序内的东西都是数据驱动的, 实现展开和收起也需要从数据角度考虑, 一个简单的例子是:

 


  1. <view
  2.  
  3. class="{{ 'normalClass' + (item.isExpanded ? 'collapse' : 'expand') }}"
  4.  
  5. >{{item.title}}</view>

对应在 JS 里有 item.isExpanded 这样一个变量来控制.

问题:  小程序 开发 只需后台提供接口吗 其余前端来实现吗  答:joselee

是的。  微信小程序没有HTML的常用标签,而是类似React的微信自定义组件,比如view、text、map等  没有window变量,但微信提供了全局的getApp()函数  没有a标签链接,在小程序中所有页面的路由全部由框架进行管理,比如wx.navigateTo、wx.redirectTo、wx.switchTab  事件绑定和条件渲染类似Angular  数据绑定采用Mustache双大括号语法  无法操作DOM,通过改变page data(类似React的state)来改变视图展现  所以如果你熟悉以上提到的所有前端技术栈,开发微信小程序你会得心应手。

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

【小程序源码网资源版权风险说明】:
本站为避免不必要的纷争,分享的所有资源中一切可能有版权风险的资源将全部转载自第三方网站或平台,站长只为大家提供相关资源的介绍和跳转引导。 因可能有疏忽大意,所以如有遗漏资源侵犯了您的合法权利,请联系站长删除。
【小程序源码网资源下载使用说明】:
本站所分享的一切QQ小程序源码,thinkphp整站源码,微信小程序源码,图文教程等资源仅供用户学习参考使用,任何人不得作其他用途,违者自行承担所有责任。
【小程序源码网毫无人看的介绍】:
本站又称Z站,原名贼娘网,开站于2018年,换过三任站长,目前站长是第四任站长,本站是一个主要分享免费开源小程序源码/网站源码/免费素材/教程资源的网站,主要小程序资源有用于学习的小程序源码,也有正版原创可商用的小程序源码,是一个公益博客型网站。
【小程序源码网原创源码版权申明】:
未经小程序源码网许可,任何人不得擅自使用本站原创首发源码进行商业行为(除本站VIP用户在期限内,版权无使用限制),否则将依法承担相应赔偿责任。
【小程序源码网转载文章版权申明】:
本站所转载的QQ小程序或微信小程序源码与其他资源仅供学习,任何人不得作其他用途,违者自行承担所有责任。
【小程序源码网站长最后的屁话】:
如有您认为本站有任何侵犯您合法权益的文章,或者您有什么疑问需求,欢迎联系站长QQ,站长24小时在线,备注公司名称和源码版权问题或者需要小程序定制开发等站长业务类型可急速处理,如果您只是交流小程序的一些开发问题或源码问题可以加入QQ群讨论,就不用加站长啦,对于白嫖党,QQ群才是处理问题的天堂,当然站长也欢迎大家骚扰~
小程序源码网 » sf问答精选《三》点击展开再次点击收回,setData
嘿,投喂下嘛!