除了我们网站,还有很多地方,聚集着小程序的开发者,在上面也有一些问题和答案,会给大家一些参考;本期整理的是sf:segmentfault.com回答部分会标注个人id,此处的个人id指的是sf内的个人id;假如是我回答的,则没有标注;
以下均属于个人回答,所以仅供参考,如有不正确的地方,请指出,以便我修正;
如果你对其中的问题也有自己的答案,欢迎分享在底下,以便观看者查看参考;
问题:
微信小程序工具登入的问题
从微信小程序工具页面,下载微信小程序安装后,运行微信小程序工具。可是扫码后就是登入不了!提示:

答:
一般这个问题是由开启代理或翻墙等引发的,取消即可;或在微信开发者工具的代理内选择直接连接;
问题:微信小程序下拉加载更多数据如何实现
答:@kstd123回答
Page({
onPullDownRefresh: ()=>{wx.stopPullDownRefresh();
}
})
问题:
微信小程序 懒加载的问题
在微信小程序中,由于无法使用dom,该怎么处理图片的懒加载呢?如果只是单纯的一个列表进行懒加载可以通过元素高度来判断,如果复杂的单页面进行懒加载就很难实现
答:@不爱吃西红柿的鱼回答
文档:https://mp.weixin.qq.com/debug/wxadoc/dev/component/image.html?t=201715
binderror HandleEvent 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}bindload HandleEvent 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}
问题:
微信小程序调用自定义方法
getStatus 是一个方法,怎样写一个方法根据传入的参数返回一个值,还有在前端页怎么调用这个方法。
就像angularJs 那样。小程序怎么实现

答:@wenkanglin回答
首先,你更正一下写法,不用在小程序中使用html的标签,把div换掉,使用view组件。虽然像一些html的标签在小程序中编译运行不会报错,但也不会被识别的,另一些像h1、h2这些标签写在小程序中会报错!
然后,小程序中不支持直接事件传参,{{getStatus(param)}}会报错,我目前想到的办法是添加一个data属性来做,比如:
<view class="flow-tit" data-param="{{param}}" bindtap="{{getStatus}}"></view>
然后在js文件中获取该参数:
getStatus(e) { console.log(e.target.dataset.param)}
问题:微信小程序get和post请求
小程序的请求要做跨域处理吗
答:@xiadd回答
不存在跨域问题,因为只可以访问后台设置好的的域名,还必须是https
问题:
微信小程序中生成3rd_session
请问这个3rd_session一般是怎么生成?后台服务器使用nodejs。

答:@lvsjack回答
3rd_session就是后台服务器生成的随机数。后台服务器可以调用head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168这样的shell 命令获取168位的随机字符串。
问题:
微信小程序 服务器 TLS版本
Linux 服务器上的 TLS 版本是 1.0 小程序要求 要 1.2该如何升级
补充:
1 nginx 的配置文件中 
2 若勾选,不校验,则可以正常调用 api

3 若不勾选,微信小程序开发工具报错

4 真机调试则始终报错

答:@Wake回答
修改配置文件中的下面两个设置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
问题:如何引入第三方插件(网上的方法已经试过)
引入第三方插件,网上有人说需要进行UMD打包,打包之后引入还是不行。有的说需要暴露接口,对插件代码进行改造,加入了module.exports = function,然后通过require引入,但是引入后还是报错。
个人引用的是strophe.js文件,求大神告知解决办法

答:@Vace_Vlm回答
去看了一下Strophe的源码。不知道你用的什么版本的。我看源码最后是这样的
function (Strophe, build, msg, iq, pres) {
window.Strophe = Strophe;
window.$build = build;
window.$msg = msg;
window.$iq = iq;
window.$pres = pres;
};
小程序中宿主环境不是浏览器,所以没有window。这样写当然是不行的。你可以尝试修改为
function (Strophe, build, msg, iq, pres) {
var global = {}
global.Strophe = Strophe;
global.$build = build;
global.$msg = msg;
global.$iq = iq;
global.$pres = pres;
module.exports = global
};
使用的时候:
var Strophe = require('./pathStrophe.js').Strophe
注:小程序和web编程是有区别的。我看了一下这个库的源码,使用了很多document, xhr之类的,这些是不支持的哦。可以查阅官方文档。Storophe源代码
问题:
微信小程序怎么修改 wx:for 的默认下标变量名index?项目中遇到一个业务场景, 在wxml页面中需要两个for循环嵌套, 在内循环里使用外循环的下标index, 但是这个又和内循环的index冲突, 各位有知道怎么自定义 wx:for 的下标吗?
答:@@shuangwaiwai回答
wx:for-index="index" 引号里面自己定义就好
问题:
微信小程序中如何通过JS来操作page标签的CSS属性?已经可以在wxss文件中使用page标签来设置整个页面的样式,但是如果想要通过用户的操作来对page标签的样式做出修改的话应该怎么做呢?
答:@许剑锋回答
小程序目前没有修改样式api,但是可以利用数据绑定实现动态改变样式,可以用view标签模拟page然后改变view标签的样式,以下案例演示了如果改变page背景颜色:
index.wxml
<view class="page" style="background-color:{{pageBackgroundColor}}" >
<button bindtap="changeColor" hover-class="none">点击修改背景颜色</button>
</view>
index.wxss
.page {
display: block;
min-height: 100%;
width: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 1;
}
index.js
Page({
data: {
// 自定义page对象CSS样式对象
pageBackgroundColor:'#5cb85c'
},
onLoad: function () {},
// 改变背景颜色
changeColor: function() {
var bgColor = this.data.pageBackgroundColor == 'red' ? '#5cb85c' : 'red';
// 设置背景颜色数据
this.setData( {
pageBackgroundColor: bgColor
} );
}
|