# 小程序自定义组件问题
app.wxss中的全局样式对自定义组件不生效
原因是小程序组件样式隔离 (opens new window)
如果想让全局样式覆盖,如下设置
Component({ options: { styleIsolation: 'apply-shared' } })1
2
3
4
5小程序点击事件传参
data-xxx
通过e.target.dataset 接收
Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors
组件和引用组件的页面不能使用id选择器(
#a)、属性选择器([a])和标签名选择器,请改用class选择器。
关于小程序的padding-right和margin-right无效的问题
padding-right和margin-right无效并且会导致右侧溢出,原因是没设置box-sizing: border-box;
在app.wxss中
page,
view,
text {
padding: 0;
margin: 0;
box-sizing: border-box;
}
2
3
4
5
6
7
# 原生input组件层级问题
如图所示van-filed使用的是小程序原生input组件,弹出的van-dialog中可以点击到input的输入框。
小程序本身的限制,是没办法解决的,只能绕过,比如在弹层渲染时隐藏field。
https://github.com/youzan/vant-weapp/issues/3372
2.always-embed
强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效)
https://developers.weixin.qq.com/miniprogram/dev/component/input.html
# 小程序双向绑定
通过model:value
<van-field always-embed label="实际劳务费用" model:value="{{ searchString }}">
</van-field>
2
但是不支持绑定对象的属性。
# setData
小程序setData会导致页面渲染,所以当页面的数据不需要渲染时,可以直接赋值。
app.wxss中的全局样式对自定义组件不生效
# 小程序返回上一页刷新数据---组件刷新
# iconfont报渲染层网络层错误
这是因为小程序检测到文件不是静态文件
修改url路径
@font-face {
font-family: "iconfont"; /* Project id 2596464 */
src: url('/assets/fonts/iconfont.woff2?t=1655256364766') format('woff2'),
url('/assets/fonts/iconfont.woff?t=1655256364766') format('woff'),
url('/assets/fonts/iconfont.ttf?t=1655256364766') format('truetype'),
url('/assets/fonts/iconfont.svg?t=1655256364766#iconfont') format('svg');
}
2
3
4
5
6
7
# 真机不显示iconfont的问题
https://www.jianshu.com/p/e5c38fb01dca
将iconfont.woff转换成base64
# 上线后出现的问题
# 域名不合法
报错信息:equest:fail url not in domain list
解决办法:在微信公众平台后台配置域名
# button嵌套image不显示
小程序open-type只有button才能生效,一次在button内放了一张image图片,在开发者工具上能够正常显示,但是到真机上就显示不出来。
# 小程序横向滚动问题
<view class="wrapper">
<view >患者姓名dsadas</view>
<view >患者姓名dsadas</view>
<view >患者姓名dsadas</view>
<view >患者姓名dsadas</view>
</view>
2
3
4
5
6
给外部容器wrapper设置overflow-x: scroll;后还需要设置white-space: nowrap; 否则内容会自动换行。
这是小程序view与div的不同之处
<scroll-view class="wrapper" scroll-x="{{true}}" enable-flex="{{true}}">
<view class="wrapper1-header">
<view class="wrapper-item">患者姓名123</view>
<view class="wrapper-item">患者姓名123</view>
<view class="wrapper-item">患者姓名123</view>
<view class="wrapper-item">患者姓名123</view>
</view>
</scroll-view>
2
3
4
5
6
7
8
这里可以用scroll-view,如果直接用view,那么需要给wrapper设置overflow-x: scroll;
# 小程序阻止事件冒泡
在浏览器中可以通过stopPropagation() 来阻止事件冒泡,但在小程序中这是不可行的。
绑定并阻止事件冒泡
除
bind外,也可以用catch来绑定事件。与bind不同,catch会阻止事件向上冒泡。