- canIUse('canvas.type.2d')始终返回false?
canvas从2.9.0开始支持2d,但是用canIUse判断始终返回false
2020-11-09 - 开发者工具组件嵌套节点渲染错误
// filter-control组件wxml <view class="filter-control"> <text class="filter-control-label">{{label}}:</text> <slot></slot> </view> // filter-control组件js Component({ properties: { label: String, } }) // select组件wxml <picker class="select" value="{{value}}" range="{{options}}" range-key="label" > <view class="select-label">{{label}}</view> </picker> // select组件js Component({ properties: { value: { type: String, optionalTypes: [String, Number], value: '', }, options: { type: Array, value: [], }, }, data: { label: '', }, observers: { value(v) { const { options } = this.data; const item = options.find(opt => opt.value === v); this.setData({ label: item ? item.label : '' }); } }, }); // page wxml <filter-control label="店铺状态"> <select value="{{0}}" options="{{[{label: '全部',value:0},{label: '开启',value:1},{label: '关闭',value: 2}]}}" /> </filter-control> filter-control中的slot为select,在工具中节点的结构有问题: [图片] 在真机上正确渲染
2020-01-18 - 组件内的textarea复用时会导致textarea锁死,无法操作
封装了一个评论弹框组件 [图片] 样子长这样子 [图片] 代码是酱紫的↓ wxml: [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'cover'[代码] [代码]hidden[代码][代码]=[代码][代码]'{{hide}}'[代码] [代码]bindtap[代码][代码]=[代码][代码]'tapHandle'[代码] [代码]data-opr[代码][代码]=[代码][代码]'close'[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'content'[代码] [代码]style[代码][代码]=[代码][代码]'top:{{top}}rpx'[代码] [代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'title'[代码][代码]>评论<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'close'[代码] [代码]data-opr[代码][代码]=[代码][代码]'close'[代码][代码]>[代码]view[代码][代码]>[代码]view[代码][代码]>[代码][代码][代码][代码][代码][代码] [代码][代码]<[代码][代码]label[代码] [代码]class[代码][代码]=[代码][代码]'area'[代码][代码]>[代码][代码][代码][代码][代码][代码] [代码][代码]<[代码][代码]textarea[代码] [代码]class[代码][代码]=[代码][代码]'eva-content'[代码][代码][代码][代码][代码][代码] [代码][代码]placeholder-class[代码][代码]=[代码][代码]'placeholder'[代码][代码][代码][代码][代码][代码] [代码][代码]value[代码][代码]=[代码][代码]'{{value}}'[代码][代码][代码][代码][代码][代码] [代码][代码]auto-focus[代码][代码]=[代码][代码]'{{!hide}}'[代码][代码][代码][代码][代码][代码] [代码][代码]focus[代码][代码]=[代码][代码]'{{!hide}}'[代码][代码][代码][代码][代码][代码] [代码][代码]placeholder[代码][代码]=[代码][代码]'{{evaWho ? ("回复"+evaWho) : "评论"}}:'[代码][代码][代码][代码][代码][代码] [代码][代码]bindinput[代码][代码]=[代码][代码]'inputText'[代码][代码][代码][代码][代码][代码] [代码][代码]bindfocus[代码][代码]=[代码][代码]'focus'[代码][代码][代码][代码][代码][代码] [代码][代码]maxlength[代码][代码]=[代码][代码]'100'[代码][代码][代码][代码][代码][代码] [代码][代码]bindblur[代码][代码]=[代码][代码]'blur'[代码][代码][代码][代码][代码][代码] [代码][代码]cursor-spacing[代码][代码]=[代码][代码]'180'[代码][代码][代码][代码][代码][代码] [代码][代码]adjust-position[代码][代码]=[代码][代码]'{{false}}'[代码][代码][代码][代码][代码][代码] [代码][代码]>[代码]textarea[代码][代码]>[代码][代码][代码][代码][代码][代码][代码] [代码][代码][代码]label[代码][代码]>[代码][代码][代码][代码][代码][代码][代码] [代码][代码]<[代码][代码]button[代码] [代码]class='send {{text.length>0?"":"disable"}}' data-opr='send'>发送[代码]button[代码][代码]>[代码][代码][代码][代码][代码][代码][代码] [代码][代码][代码]view[代码][代码]>[代码][代码][代码][代码][代码][代码][代码][代码]view[代码][代码]>[代码][代码][代码][代码]wxss: [代码]/* components/input-eva/input-eva.wxss */[代码][代码].cover {[代码][代码] [代码][代码]position[代码][代码]: [代码][代码]absolute[代码][代码];[代码][代码] [代码][代码]bottom[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]left[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]right[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]top[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]background[代码][代码]: rgba([代码][代码]0[代码][代码], [代码][代码]0[代码][代码], [代码][代码]0[代码][代码], .[代码][代码]4[代码][代码]);[代码][代码] [代码][代码]font-size[代码][代码]: [代码][代码]26[代码][代码]rpx;[代码][代码] [代码][代码]z-index[代码][代码]: [代码][代码]3[代码][代码];[代码][代码]}[代码][代码].content {[代码][代码] [代码][代码]position[代码][代码]: [代码][代码]absolute[代码][代码];[代码][代码] [代码][代码]top[代码][代码]: [代码][代码]373[代码][代码]rpx;[代码][代码] [代码][代码]left[代码][代码]: [代码][代码]30[代码][代码]rpx;[代码][代码] [代码][代码]right[代码][代码]: [代码][代码]30[代码][代码]rpx;[代码][代码] [代码][代码]padding[代码][代码]: [代码][代码]0[代码] [代码]30[代码][代码]rpx [代码][代码]30[代码][代码]rpx;[代码][代码] [代码][代码]background[代码][代码]: [代码][代码]white[代码][代码];[代码][代码]}[代码][代码].title {[代码][代码] [代码][代码]line-height[代码][代码]: [代码][代码]114[代码][代码]rpx;[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]114[代码][代码]rpx;[代码][代码] [代码][代码]text-indent[代码][代码]: [代码][代码]30[代码][代码]rpx;[代码][代码] [代码][代码]font-size[代码][代码]: [代码][代码]32[代码][代码]rpx;[代码][代码] [代码][代码]font-weight[代码][代码]: [代码][代码]bold[代码][代码];[代码][代码] [代码][代码]color[代码][代码]: [代码][代码]#999[代码][代码];[代码][代码] [代码][代码]text-align[代码][代码]: [代码][代码]center[代码][代码];[代码][代码]}[代码][代码].close {[代码][代码] [代码][代码]float[代码][代码]: [代码][代码]right[代码][代码];[代码][代码] [代码][代码]width[代码][代码]: [代码][代码]60[代码][代码]rpx;[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码] [代码][代码]background[代码][代码]: [代码][代码]url[代码][代码](data:image/png;base[代码][代码]64[代码][代码],iVBORw[代码][代码]0[代码][代码]KGgoAAAANSUhEUgAAAB[代码][代码]4[代码][代码]AAAAeBAMAAADJHrORAAAAHlBMVEUAAACampr///+ZmZmampqampqampqbm[代码][代码]5[代码][代码]uampqZmZnRBniaAAAACXRSTlMAnAHx[代码][代码]5[代码][代码]Y[代码][代码]2[代码][代码]HfnH+McWJAAAAeElEQVQY[代码][代码]012[代码][代码]RywmAMBBEFzvQmzf[代码][代码]1[代码][代码]YA[代码][代码]924[代码][代码]NmbdVhJQIR[代码][代码]0[代码][代码]axjCLLxAsrt[代码][代码]5[代码][代码]Q[代码][代码]7[代码][代码]KfeK[代码][代码]7[代码][代码]ItZ[代码][代码]9[代码][代码]xlMXhML[代码][代码]9[代码][代码]x[代码][代码]18[代码][代码]nxWr+[代码][代码]2[代码][代码]y[代码][代码]2[代码][代码]LcmA[代码][代码]4[代码][代码]toX[代码][代码]4[代码][代码]a[代码][代码]2[代码][代码]xjI+t[代码][代码]6[代码][代码]OcfeMuyCxBJtwCkbhFFThFBgjpp[代码][代码]7[代码][代码]v[代码][代码]8[代码][代码]T/mw[代码][代码]3[代码][代码]xZD+tlP[代码][代码]9[代码][代码]gv[代码][代码]9[代码][代码]pP[代码][代码]95[代码][代码]jw[代码][代码]4[代码][代码]L[代码][代码]87[代码][代码]zB[代码][代码]8[代码][代码]x[代码][代码]6[代码][代码]PJd[代码][代码]9[代码][代码]LT[代码][代码]2[代码][代码]AAAAAAElFTkSuQmCC) [代码][代码]center[代码][代码]/[代码][代码]30[代码][代码]rpx [代码][代码]no-repeat[代码][代码];[代码][代码]}[代码][代码].area {[代码][代码] [代码][代码]display[代码][代码]: [代码][代码]block[代码][代码];[代码][代码] [代码][代码]padding[代码][代码]: [代码][代码]10[代码][代码]rpx [代码][代码]16[代码][代码]rpx;[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]200[代码][代码]rpx;[代码][代码] [代码][代码]border[代码][代码]: [代码][代码]2[代码][代码]rpx [代码][代码]solid[代码] [代码]#E6E6E6[代码][代码];[代码][代码] [代码][代码]border-radius: [代码][代码]6[代码][代码]rpx;[代码][代码] [代码][代码]background[代码][代码]: [代码][代码]white[代码][代码];[代码][代码]}[代码][代码].eva-content {[代码][代码] [代码][代码]width[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码] [代码] [代码]}[代码][代码].send {[代码][代码] [代码][代码]margin[代码][代码]: [代码][代码]20[代码][代码]rpx [代码][代码]0[代码] [代码]0[代码][代码];[代码][代码] [代码][代码]line-height[代码][代码]: [代码][代码]80[代码][代码]rpx;[代码][代码] [代码][代码]border-radius: [代码][代码]6[代码][代码]rpx;[代码][代码] [代码][代码]color[代码][代码]: [代码][代码]white[代码][代码];[代码][代码] [代码][代码]background[代码][代码]: [代码][代码]#F3CC3E[代码][代码];[代码][代码] [代码][代码]font-weight[代码][代码]: [代码][代码]bold[代码][代码];[代码][代码]}[代码][代码].send.disable {[代码][代码] [代码][代码]color[代码][代码]: rgba([代码][代码]255[代码][代码], [代码][代码]255[代码][代码], [代码][代码]255[代码][代码], .[代码][代码]66[代码][代码]);[代码][代码]}[代码][代码].placeholder {[代码][代码] [代码][代码]color[代码][代码]: [代码][代码]#ccc[代码][代码];[代码][代码]}[代码]js: [代码]// components/input-eva/input-eva.js[代码][代码]Component({[代码][代码] [代码][代码]properties: {[代码][代码] [代码][代码]hide: {[代码][代码] [代码][代码]type: Boolean,[代码][代码] [代码][代码]value: [代码][代码]true[代码][代码] [代码][代码]},[代码][代码] [代码][代码]evaWho: {[代码][代码] [代码][代码]type: String,[代码][代码] [代码][代码]value: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]observer(newV,oldV) {[代码][代码] [代码][代码]if[代码][代码](newV !== oldV) {[代码][代码] [代码][代码]this[代码][代码].resetValue()[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]text: [代码][代码]""[代码][代码],[代码][代码] [代码][代码]value: [代码][代码]""[代码][代码],[代码][代码] [代码][代码]top: 373,[代码][代码] [代码][代码]},[代码][代码] [代码][代码]methods: {[代码][代码] [代码][代码]inputText(e) {[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]text: e.detail.value[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]blur() {[代码][代码] [代码][代码]this[代码][代码].setData({top:373});[代码][代码] [代码][代码]},[代码][代码] [代码][代码]focus() {[代码][代码] [代码][代码]this[代码][代码].setData({top:20})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]tapHandle({target:{dataset:{opr}}}) {[代码][代码] [代码][代码]if[代码] [代码](opr == [代码][代码]'close'[代码][代码]) [代码][代码]this[代码][代码].triggerEvent([代码][代码]"close"[代码][代码]);[代码][代码] [代码][代码]else[代码] [代码]if[代码][代码](opr == [代码][代码]'send'[代码][代码]) [代码][代码]this[代码][代码].send();[代码][代码] [代码][代码]},[代码][代码] [代码] [代码] [代码][代码]send() {[代码][代码] [代码][代码]this[代码][代码].triggerEvent([代码][代码]"submit"[代码][代码],[代码][代码]this[代码][代码].data.text);[代码][代码] [代码][代码]this[代码][代码].resetValue(); [代码][代码] [代码][代码]},[代码][代码] [代码][代码]resetValue() {[代码][代码] [代码][代码]this[代码][代码].setData({ value: [代码][代码]""[代码][代码], text: [代码][代码]""[代码] [代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码]})[代码]问题是这样的=> 在真机中,ios、安卓都一样,当前页面有这个组件时,当进入其他页面再返回到这个页面时,这个组件的textarea会崩溃,操作不了,连placeholder都显示不了【开发工具上是没问题的】。只有使用wx:if将组件回收,在返回到页面时再将其渲染才行。不知道什么原因。啥报错都没有。这个方案也是摸索了好久才搞出来的。 [图片] [图片] [图片]
2018-05-22 - textarea 设置auto-height后 在ios中会打断输入
textarea 设置auto-height自动增高,在ios中如果正在输入的字刚好处于行末在超出要换行时会打断当前输入并把英文输入到框中。 [图片] [图片] 是否有解决方案??
2018-05-11