这段Aura组件JS控制器报“sendDataProc is not a function”错的原因是什么?
错误原因排查及解决
错误提示sendDataProc is not a function,核心问题是component.get("v.sendData")获取到的不是可执行函数,具体可能的原因及解决方式如下:
组件属性未正确定义
检查c:DataProcessor组件的属性声明,确保sendData被定义为Function类型。若属性类型写错(比如String、Object),获取到的值就不是函数。正确的属性声明应为:<aura:attribute name="sendData" type="Function" description="传递数据到VF页面的回调函数"/>属性未绑定有效函数
如果是在Visualforce页面嵌入该Aura组件,需确保sendData绑定了VF页面中存在的JS函数。示例写法:<apex:page> <script> function handleSendData(data, callback) { // 处理数据并执行回调的逻辑 callback(); } </script> <c:DataProcessor sendData="{!handleSendData}"/> </apex:page>若是在Aura父组件中使用,需传递父组件内的函数引用,比如父组件标记中绑定:
<c:DataProcessor sendData="{!c.parentSendDataFunction}"/>函数调用时机过早
若downloadDocument在组件初始化完成前被触发(比如页面加载时立即调用),此时v.sendData可能未被赋值,处于undefined状态,无法作为函数调用。可以在调用前增加判断,或者确保组件初始化完成后再执行方法:if (typeof sendDataProc === 'function') { sendDataProc(dataToSend, function(){ console.log('hello'); }); } else { console.error('sendData 属性未绑定有效函数'); }
内容的提问来源于stack exchange,提问作者Harshit Chaubey
相关产品推荐
相关产品推荐

