遇到同样的问题,我的解决方案是弃用了behavior这个功能,将data跟methods封装起来,在Page/Component函数被调用时再添加进去...为了语法上的声明,选择了不用behavior,有点无奈。 // funcs/test.ts export const testData = { test: '' } export const testMethods = { // 但是函数内如果要使用this,就要对this再加上声明 test (this: WechatMiniprogram.Page.Instance<typeof testData, {}>) { // do something this.setData({ test: 'hello world' }) } } // components/x/x.ts import { testData, testMethods } from 'path/to/funcs/test' Component({ data: { ...testData, // other component data }, methods: { ...testMethods, // other component methods } }) // pages/x/x.ts import { testData, testMethods } from 'path/to/funcs/test' Page({ ...testMethods, data: { ...testData, // other page data }, // other page methods })
使用typescript开发behavior,调用data 的数据过不了类型检测怎么办?1、创建一个behavior,并在组件中引入这个behavior,调用behavior里的data和方法 都会报错不存在该属性或者方法;虽然是可以用as any 就可以调用到,但是有没有更好的解决方法呢? [图片] 2、在组件中引入这个behavior,调用behavior里的data和方法 都会报错不存在该属性或者方法; [图片]
2022-10-19非常感谢楼上提供了思路,但是感觉在 onPageNotFound 时候去执行 wx.reLaunch 到相同的路径下会不会有些许问题,万一进入的就是一个不存在的页面,此时小程序就可能会在不断的重启? 所以,我这里采用的是 wx.onPageNotFound https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.html 跟 wx.redirectTo https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.redirectTo.html: App({ onLaunch () { wx.onPageNotFound((res) => { const { path, query } = res wx.redirectTo({ url: path + '?' + Object.entries(query).map(([key, value]) => `${key}=${value}`).join('&'), fail: () => { // 如果再次跳转失败了,则跳转到首页 wx.redirectTo({ url: 'pages/index/index' }) } }) }) }) } })
sendMessagePath 设置路径,发送后打开 页面不存在https://developers.weixin.qq.com/miniprogram/dev/api/open-api/service-chat/wx.openCustomerServiceChat.html 如果不设置sendMessagePath,还能打开首页 [图片]
2022-01-05我这边是svg格式的图片不行,换成png就可以了。
cover-image 不显示图片基础wepy开发,基础库详细版本,2.0.9 [130],video标签上面覆盖cover-image,用于显示微信头像和本地的占位图片,src在获取到数据后动态设置,值已经变过来了,但是图像并没有显示出来 使用远程调试,cover-view和cover-image有个样式visibility:hidden,我并没有加这个样式,是标签使用不当,还是怎样?迫切需要官方人员解答
2021-05-28根据前面说的提示,触发tap后,把input对应的focus改成true,解决了我的问题。
【bug】iOS中input组件的focus事件触发慢了- 需求的场景描述(希望解决的问题) 在iOS中,input组件的focus事件回调会在键盘呼起动画结束后触发。举个简单的例子 页面的wxml: [代码]<[代码][代码]input[代码] [代码]focus[代码][代码]=[代码][代码]"{{focus}}"[代码] [代码]bindfocus[代码][代码]=[代码][代码]"handleFocus" bindblur="handleBlur"[代码] [代码]/>[代码] <button bindtap="focus">focus input</button> <button>blur input</button> 页面js: [代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]focus: false[代码][代码] [代码][代码]},[代码] [代码] focus() {[代码] [代码] this.setData({focus: true})[代码] [代码] },[代码] [代码] [代码][代码]handleFocus(){[代码][代码] console.log("handleFocus")[代码][代码] [代码][代码]},[代码] [代码] [代码][代码] [代码][代码]handleBlur(){[代码] [代码] console.log("handleBlur")[代码][代码] [代码][代码]},[代码] [代码]})[代码] 1、点击“focus input”按钮,focus变为true,开始拉起键盘,这个过程是有动画的。 2、直观上,键盘呼起动画持续时长大概是500ms ~ 1000ms,动画结束之后,handleFocus回调会被执行,打印handleFocus。 3、如果在键盘呼起的过程中快速点击“blur input”按钮,会立即触发blur事件。由于focus事件是在键盘动画结束之后触发的,handleBlur的执行时机反而在handleFocus之前了。 这个问题很严重,事件回调的顺序串了,很多逻辑就乱了。 不提供实例了,如果这个说法(在iOS中,input组件的focus事件回调会在键盘呼起动画结束后触发)成立,应该就能说明问题了。
2021-03-17问题找到了,不好意思,这个是我这边的问题。 我是通过package.scripts来执行对应的脚本的,为了解决cli可能存在不同安装位置的问题,写了一个 .bashrc 文件用来引用 cli 路径: # wxcli function wxcli() { /Applications/wechatwebdevtools.app/Contents/MacOS/cli $@ } export -f wxcli 但是尴尬的事情发生了,用 $@ 来传递参数,似乎在bash环境下就会将参数里边的空格切开,从而导致了我上边的错误。
在bash环境下,命令行工具上传代码时对空格参数的处理有些问题?在bash环境下,命令行工具似乎对参数里边的空格的处理有点问题? #!/bin/bash cli upload --project "/path/to/project" -v 1.0.0 -d "desc with spaces" -i "/path/to/info" --debug 执行日志: [info] args { _: [ 'upload', 'with', 'spaces' ], project: '/path/to/project', v: '1.0.0', version: '1.0.0', d: 'desc', desc: 'desc', i: '/path/to/info', 'info-output': '/path/to/info', infoOutput: '/path/to/info', debug: true, '$0': 'js/common/cli/index.js' } [info] installPath /Applications/wechatwebdevtools.app/Contents/MacOS [info] userDirPath /Users/username/Library/Application Support/微信开发者工具/xxxxx/Default [info] appPath /Applications/wechatwebdevtools.app/Contents/MacOS/wechatwebdevtools ⠋ initialize [info] updatePort cliport=3799 [info] connect upgrade response 200 [info] ws connect xxxxx xxxxxx [info] long connection established ✔ IDE server has started, listening on http://127.0.0.1:35882 ✔ Using AppID: xxxxxxxxxxx ⠼ Uploading ┌─────────┬────────────┬─────────────┐ │ (index) │ size │ size (Byte) │ ├─────────┼────────────┼─────────────┤ │ TOTAL │ '495.1 KB' │ 506977 │ └─────────┴────────────┴─────────────┘ ✔ upload 这里执行下来,后台看到的项目备注是 desc, 空格后边的描述就没了。从日志上看,似乎 with 被当成是另一个参数了? 但是如果环境换成 zsh,那就没有什么问题: #!/bin/zsh cli upload --project "/path/to/project" -v 1.0.0 -d "desc with spaces" -i "/path/to/info" --debug 执行日志: [info] args { _: [ 'upload' ], project: '/path/to/project', v: '1.3.2', version: '1.3.2', d: 'desc with spaces', desc: 'desc with spaces', i: '/path/to/info', 'info-output': '/path/to/info', infoOutput: '/path/to/info', debug: true, '$0': 'js/common/cli/index.js' } [info] installPath /Applications/wechatwebdevtools.app/Contents/MacOS [info] userDirPath /Users/username/Library/Application Support/微信开发者工具/xxxx/Default [info] appPath /Applications/wechatwebdevtools.app/Contents/MacOS/wechatwebdevtools ⠋ initialize [info] updatePort cliport=3799 [info] connect upgrade response 200 [info] ws connect 19399 xxxxxx xxxxxx [info] long connection established ✔ IDE server has started, listening on http://127.0.0.1:35882 ✔ Using AppID: xxxxxxxx ⠹ Uploading ┌─────────┬────────────┬─────────────┐ │ (index) │ size │ size (Byte) │ ├─────────┼────────────┼─────────────┤ │ TOTAL │ '495.1 KB' │ 506977 │ └─────────┴────────────┴─────────────┘ ✔ upload
2020-10-20或者开发工具里边提供一个模拟的方式,我也是勉强能够接受的。
关于wx.getAccountInfoSync接口中,体验版是否考虑返回版本号?就是wx.getAccountInfoSync()接口中是否考虑返回一下版本号?开发版没有返回我可以理解,但是体验版是可以返回一下吧?有时候需要拿着这个版本号去做一些事情,但是却没有,只有到了发布后才能做对应的校验跟测试?如果我的代码里边有错误,到了线上版本,那就是致命打击了!!! 小程序助手里边,体验版对应就有一个版本号,但是这里却拿不到,我觉得十分的不合理。
2020-10-16