- 微信小程序如何获取template中input的值
- 需求的场景描述(希望解决的问题) <form > <text>pages/index/AM/Am_Add.wxml</text> <import src="../../../template/template.wxml" /> <view wx:for="{{List}}" wx:key="item" bindsubmit='save'> <template is="{{item.FIELDTYPE}}" data="{{...List[index]}}" /> </view> <button form-type='submit' bindtap='test' data-item='777'>保存</button> </form> - 希望提供的能力 在template之中存在复数的input,想要点击模板外的button的时候获取template之中input的值
2018-09-13 - 微信小程序如何实现循环自定义组件?
我想循环 多个自定义组件 ,,就像模板一样 <template is={{}} />效果 , 还请大神指教,多谢
2020-04-29 - 微信小程序中如何获取当前用户在公众号中的openID?
想把小程序中的消息从公众号中推送给用户,如何获取小程序里当前登录用户在微信公众号中的openid,然后进行消息推送呢?
2020-06-18 - 小程序如何获取 公众号的openid
小程序如果用auth2.0授权 回调网址怎么添小程序的地址 或者用unionid 调用 提现接口 会显示 appid 和openid 不一致 小程序如何如果获取公众号openid 公众号不是我开发的 有大神指导一下么?
2019-01-17 - 如何编写一个富文本编辑器
先上效果图 [图片] 主要用到小程序 editor 组件和EditorContext的API,其中关键的是EditorContext.format方法 前期准备 首页要想好富文本编辑器需要支持哪些标签和样式 然后找好对应的图标,可以去 iconfont找图标很方便 准备好后就可以设计界面了 html中关键性代码说明 [代码]<div // 判断当前选中的文本是否包含居中样式 class="item icon icon-center {{formats.align === 'center' ? 'ql-active' : ''}}" data-name="align" //点击事件中获取该样式名称 data-value="center" //点击事件中获取该样式的值 catchtouchend="format" // 这个事件主要目的是使编辑器不会失去焦点很重要 @tap="onFormat" // 设置样式 /> [代码] 查看具体代码 onFormat方法设置文本格式 [代码] onFormat(e) { if (!this.canUse) return; const { name, value } = e.target.dataset; if (!name) return; this.editorCtx.format(name, value); }, [代码] 遇到的坑 在IOS中编辑器聚焦时页面并不会被上推,直接导致工具条被虚拟键盘挡住了 解决办法 监听键盘高度变化事件,获取键盘高度 [代码] attached() { wx.onKeyboardHeightChange(res => { const { height } = res; if (height) { this.boardHeight = height; } }); } [代码] [代码]<div class="editor-tool" style="bottom: {{isIOS ? boardHeight : 0}}px;"> ..... </div> [代码] 查看完整示例
2020-03-11 - wx.uploadFile在pc端上传图片异常?
使用pc端的小程序,上传图片的时候服务端有报错:the request was rejected because no multipart boundary was found;手机端一直正常不会有这个问题。 相关代码:[图片]
2020-04-14 - pc端打开小程序无法上传图片,提示error?
通过电脑端上传,如图所示;,服务器报错:Error: bad content-type header, no multipart boundary,(已经多用户测试并复现bug)[图片] 通过手机端上传,无论是安卓还是ios端都能正常上传,请官方给个问题具体解决方案[图片] [图片]
2020-09-17 - 使用wx.request发送multipart/form-data请求的方法
社区里有不少关于wx.request发送multipart/form-data请求的问题,我看了几个,基本都说wx.request不支持,得用wx.uploadFile来“曲线救国”。我花了些时间研究了一下,找到了如下方法,分享出来,希望能帮助到有需要的人。 首先,服务端,我用的是async-busboy来解析multipart/form-data请求,测试代码直接使用它提供的就可以:https://github.com/m4nuC/async-busboy/blob/master/examples/index.js 小程序端: 如果wx.request中仅指定'content-type'为'multipart/form-data',服务端会报"no multipart boundary was found"的错误,就像这个帖子里描述的:https://developers.weixin.qq.com/community/develop/doc/000e64476f8d80fd7b9765d5655c00 尽管指定了content-type为'mutipart/form-data',但是wx.request并不会为我们自动添加boundary,既然如此,我们自己加不就可以了吗?经过测试,确认了这个方法可行,前端示例代码如下: [代码]wx.request({[代码][代码] [代码][代码]url: [代码][代码]'http://localhost:8080/test/multipart-form'[代码][代码],[代码][代码] [代码][代码]method: [代码][代码]'POST'[代码][代码],[代码][代码] [代码][代码]header: {[代码][代码] [代码][代码]'content-type'[代码][代码]: [代码][代码]'multipart/form-data; boundary=XXX'[代码][代码] [代码][代码]},[代码][代码] [代码][代码]data: [代码][代码]'\r\n--XXX'[代码] [代码]+[代码][代码] [代码][代码]'\r\nContent-Disposition: form-data; name="field1"'[代码] [代码]+[代码][代码] [代码][代码]'\r\n'[代码] [代码]+[代码][代码] [代码][代码]'\r\nvalue1'[代码] [代码]+[代码][代码] [代码][代码]'\r\n--XXX'[代码] [代码]+[代码][代码] [代码][代码]'\r\nContent-Disposition: form-data; name="field2"'[代码] [代码]+[代码][代码] [代码][代码]'\r\n'[代码] [代码]+[代码][代码] [代码][代码]'\r\nvalue2'[代码] [代码]+[代码][代码] [代码][代码]'\r\n--XXX--'[代码][代码] [代码][代码]})[代码]这里,我向服务端传递了两个参数:field1=value1, field2=value2,服务端得到的结果如下: [图片] 如果对multipart/form-data的请求体格式不了解,可以参考这篇文章:https://ec.haxx.se/http-multipart.html wx.request中的data结构看起来有些复杂,有需要的可以封装一下,封装好的API欢迎跟帖分享出来。
2019-08-10 - wx.request上传multipart/form-data文件
记录一下在小程序中put文件 第一步,wx.chooseMessageFile,获取上传的文件的临时路径; 第二步, wx.getFileSystemManager().readFile,读取文件ArrayBuffer; 第三步,构造一个multi/formdata格式的请求,boundary头部和boundary尾部; 第四步,将boundary头部、文件ArrayBuffer、boundary尾部转换成Array,并按顺序拼接到一起; 第五步,将最终结果转换为Uint8Array; 第六步,put请求 供参考 、、、 wx.chooseMessageFile({ count: 6, type: ‘all’, success(res) { var tempFilePaths = res.tempFiles; var filename = tempFilePaths[0].name; wx.getFileSystemManager().readFile({ filePath: tempFilePaths[0].path, success:fileStream=>{ var fileArray = new Uint8Array(fileStream.data); var start_boundary = ‘\r\n–yourboundary\r\n’ + ‘Content-Disposition: form-data; name=“data”; filename="’ + yourfilename+ ‘"\r\n’+‘Content-Type:application/octet-stream’ +’\r\n\r\n’ ; var end_boundary = ‘\r\n–yourboundary–’; var startArray = []; for (var i = 0; i < start_boundary.length; i++) { startArray.push(start_boundary.charCodeAt(i)); } var endArray = []; for (var i = 0; i < end_boundary.length; i++) { endArray.push(end_boundary.charCodeAt(i)); } var totalArray = startArray.concat(Array.prototype.slice.call(fileArray), endArray); var typedArray = new Uint8Array(totalArray); wx.request({ url: ‘yoururl’, method: ‘PUT’, header: { ‘content-type’: ‘multipart/form-data; boundary=yourboundary’ }, data: totalArray.buffer, success: function (res) { … }}) }}) } )} 、、、
2019-09-12 - 关于form表单无法提交事件问题?
[图片] 想请问一下我这种情况点击登录按钮为什么控制台里面没有显示呢? 页面wxml代码: <form bindsubmit="taos"> <view class="v3"> <input name="username" placeholder="请输入用户名" class="v-input" value="{{ username }}" /> </view> <view class="v3" style="margin-top:5rpx;"> <input name="password" placeholder="请输入密码" password="true" class="v-input" value="{{ password }}" /> </view> <view class="v4"> <button type="primary" class="v4-btn"><text class="v4-btn-txt" form-type="submit">登录</text></button> </view> <view class="v4" style="margin-top:5rpx;"> <button class="v4-btn" style="background-color:#ddd"><text class="v4-btn-txt">注册</text></button> </view> </form> 页面js代码: Page({ data: { username:"admin", password:"123" }, taos:function(e){ console.log(e) } })
2020-09-19