钉钉小程序开发注意事项-2020.05.19
一.模板
Template作为弹框切记慎用input,原因弹框写的动画用position: absolute;或者position: fixed;定位时手机端钉钉小程序input没有使用原生属性导致无法解决键盘顶起页面的BUG,会造成页面被顶起来弹框过高会造成input不可见,如果使用请把input放到最下面。 [^适用于用于所有的定位元素块上]
二.Input
钉钉小程序input目前只支持text、search所以其他多余的属性都不支持如图
举例:调用数字键盘做纯数字输入框
因为钉钉bug虽然不能用number属性但是直接写这个属性还是可以调起数字键盘的<但是这个键盘可以返回到英文和中文界面>那我们就可以来做些处理使用户只能输入数字了,我第一想到的是onKeypress原生方法写一个正则限制输入
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode||event.which)))"
正则限制为数字才能输入,后来发现我太年青了,钉钉把原生属性限制的死死的,试了好几种最后只能用最笨的方法了了:示例
<input value="{{InsuredPrice}}" type="number" class="input" onInput="bindKeyInput" placeholder="未保价货品最高赔付9倍运费,建议保价" />
bindKeyInput(e) {
let value = e.detail.value;
this.setData({InsuredPrice:value});
let KeyInput = value.replace(/[^0-9]/ig,"");
this.setData({InsuredPrice:KeyInput})
},
1.因为钉钉的机制你只能先给input赋值后在修改值在复制,原因是你直接赋值是不能修改页面的input的值。
2.input的onInput方法还有一个坑在手机端输入±等符号返回的值是空的你想做写修改时这时很坑的如你获取不到正常输入的值如:原来输入框中时123此时输入了一个符号e.detail.value获取到的是空导致获取不到原来值请注意<此处巨坑无比>
三.更新管理小程序
dd.getUpdateManager IDE报错不用管这个是V2引擎可用的小程序切换引擎请参考小程序引擎升级计划https://ding-doc.dingtalk.com/doc#/dev/hi3eyb <注意这个是有延迟的发布新版本后不是第一时间就能更新的>
四.企业定制应用无法进行真机测试体验版也是无法使用
请进行发布后调试,或者开一个测试站发布测试
五. getCurrentPages页面站问题
调用页面站一般就是为了在当前页面修改上个页面的数据如:
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2];
prevPage.setData({
addressArr:[],
isPlaceholder:false,
is_default_index:0,
addressArr_id:[],
addressArr_index:[],
page:1,
last_page:0,
getAddressType:true
})
// prevPage.getAddress(1);
dd.navigateBack()
prevPage.getAddress() 只有ios可以安卓目前是不支持的解决方法在上个页面onshow中加判断如
onShow(query) {
// 页面显示
if(this.data.getAddressType == true){
this.getAddress(1)
}
},
如有下个页面则调用方法后记得把getAddressType修改为fasle
以上请及时注意钉钉更新BUG已提交可能下个版本就修复 记于2020/5/26