Salesforce Lightning Component添加doInit后按钮处理函数失效问题求助
问题根因
你遇到的按钮无响应问题是Aura控制器的语法结构错误导致的:
- Aura组件要求所有控制器方法必须定义在同一个JS对象中,你当前的代码把
doInit单独放在第一个对象内,handleNo、handleYes放在第二个独立对象内,框架只能识别第一个对象的方法,因此找不到按钮绑定的处理函数,点击无响应。 - 组件的接口声明重复写了两次
force:hasRecordId,属于冗余内容,建议删除。
修正后的代码
组件代码
<aura:component implements="force:lightningQuickActionWithoutHeader,force:hasRecordId,force:appHostable,flexipage:availableForRecordHome,force:hasSObjectName" access="global"> <aura:handler name="init" value="{!this}" action="{!c.doInit}"/> <b>This is recordID {!v.recordId} </b><br/> Are you sure you want to proceed? <div class="slds-align_absolute-center"> <lightning:button label="No" variant="destructive" onclick="{!c.handleNo}" ></lightning:button> <lightning:button label="Yes" onclick="{!c.handleYes}"></lightning:button> </div> </aura:component>
控制器代码
({ doInit:function(component,event,helper){ alert(component.get("v.recordId")); }, handleNo: function (component, event, helper) { var urlEvent = $A.get("e.force:navigateToURL"); urlEvent.setParams({ url: "/apex/NQuote", isredirect: "true" }); urlEvent.fire(); }, handleYes: function (component, event, helper) { var urlEvent = $A.get("e.force:navigateToURL"); urlEvent.setParams({ url: "/apex/TestPage", isredirect: "true" }); urlEvent.fire(); } })
验证说明
将上述修正后的代码重新部署到Salesforce环境,刷新商机页面后测试,init方法会正常弹出recordId提示,两个按钮的跳转逻辑也会正常触发。
内容的提问来源于stack exchange,提问作者Hasan Zubairi
相关产品推荐
相关产品推荐

