New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
支付宝小程序中,往原生组件中传递function参数时,调用不到 #2273
Comments
改用 vue 事件的方式调用 |
|
事件可以传递具体的参数,如遇到问题可以具体说下 |
@zhetengbiji 以上的代码使用的是蚂蚁金服的antv-f2图表库 |
尝试变通为如下两种方式之一:
|
@zhetengbiji |
@zhetengbiji 希望能够从本质上解决问题。 |
@NicInvade |
@NicInvade 我封的是select组件 |
@mengxianren 图片看不到是... |
@NicInvade |
@mengxianren 这个地方应该是undefined了,后面继续调属性,这里应该报错了 有没有方法直接传属性啊 =-=!! |
@NicInvade 父组件给子组件传值,直接传就好啊,子组件props里定义属性,父组件直接传 |
@mengxianren 支付宝子组件是原生组件,props中的属性是function类型的时候,父组件传进去的function,获取不到啊。。 |
@mengxianren |
@NicInvade 图片看不到,f2图表,uni有个vue的插件你看看好不好用 |
@mengxianren 父组件调用方式一: ` 父组件调用方式二: ` |
@NicInvade 首先你先看下你封的组件在支付宝中可不可已调用,然后vue中调用的写法要把onChange 改为@change |
@mengxianren |
@mengxianren @zhetengbiji |
@NicInvade ......我一直以为你是启用的 |
转化为小程序时获取不到第三方包怎么办? @NicInvade |
我这边本地开发者工具可以调用父组件方法,但是预览和线上测试没有触发,已启用component2。 |
是这样监听事件吗? |
子组件: {
methods: {
async onClose(event) {
console.log('join-member onClose event :', event);
this.props.onClose(event);
// this.$page.data.onClose(event);
},
async onAuthSuccess(res) {
console.log('join-member onAuthSuccess res :', res);
this.props.onAuthSuccess(res);
},
async onAuthFail(res) {
console.log('join-member onAuthFail res :', res);
this.props.onAuthFail(res);
}
}
} 父组件: <join-member
:expend="showMemberCenter"
:sellerId="sellerId"
@close="onClose"
@authFail="onAuthFail"
@authSuccess="onAuthSuccess"
/> |
用法看起来没有问题,后续我测试一下你说的预览问题,你先切换不同的基础库试试 |
@zhetengbiji 我升级了uni包,本地提示事件信息不存在,改用了 #917 (comment) 的事件绑定方法,可以触发了 |
之前不是最新的吗?用的版本多少?现在用的多少? 使用 vue 事件监听是 3.1.0+ 开始支持的 |
你好,我这也遇到跟你差不多的问题,也是function传进去props里面null。另外请问知道如何在父组件中获取原生子组件的实例吗,因为ref无效而又必须在父组件中调用子组件的方法。全用原生来写的话就可以通过ref=saveref saveref(e){this.childcomponent = e } 来获取,但是在uniapp .vue中该写法不可行,有没有了解可替代的方案 -----------------。。。启用component2就可以了,之前浪费了好多时间尝试【😀】 |
我也通过这个方法搞定了支付宝烽火feeds插件,不过我是在组件中展示,用的mounted生命周期,如果是页面中才用onLoad。解决这些问题太难了。我发现跟着 @zhetengbiji 的代码和思路走,怎么都是不对,要不是不执行,要不就是报:事件方法不存在。 |
版本多少? |
指的是谁的版本?vue? uni?支付宝基础库版本? |
uni-app 版本 |
你看看下面的版本不,不知道你要哪个~
|
哦,你的版本比较老的原因,执行 |
npx @dcloudio/uvm 3.2.12.20211029
npx @dcloudio/uvm 3.2.12.20211029 可以吗?哪个版本以下,就不支持funtion传递了? |
可以直接使用 3.4.7.20220422,如果一定要找版本可以看下更新日志:https://download1.dcloud.net.cn/hbuilderx/changelog/3.4.7.20220422.html |
只能说一个坑接着一个坑,我升级依赖,启动后。现在报错这个:
` |
示例工程提供一下 |
请问事例工程如何提供给您 @zhetengbiji |
可以直接去除业务代码后上传。 |
问题描述
mycomponents原生组件中,在props中有定义一个参数:onInit: () => { }
但是在vue中,传递的方法调用不到,以下几种方式都有问题:
1.
该写法是支付宝小程序要求的写法,但是原生组件中打印onInit,会出现:ƒ (){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.triggerEvent.apply(n,[a.method].concat(t))}
2.
这种写法,原生组件中的onInit方法还是预定义的默认函数。但是该写法,在微信小程序中是有效的。
补充信息
使用第一种写法的时候,断点测试了效果
以下代码,应该是支付宝小程序运行时的代码
The text was updated successfully, but these errors were encountered: