我们终于到了!现在是时候将我们新的Lightning组件用作标准按钮覆盖。这实际上很简单,几乎可以用你创建的任何Lightning组件完成。有几个考虑因素,但我们很快就会解决。
添加覆盖界面
- 在您的组织的财产记录页面上,单击替代文本:设置图标,然后选择 Edit Page.
- 点击我们新的Lightning组件选择它,然后点击:删除组件将其从页面中删除。
- 单击保存,然后单击返回返回到您的属性详细信息页面。
现在,我们准备将该组件用作按钮覆盖,因此不必再将其放在页面上。
- 在Developer Console中,切换回PropertyDialog组件。
- 将lightning:actionOverride添加到aura:component标签中的接口列表中。它现在应该是这样的:
<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId,lightning:actionOverride" access="global" >
- 保存文件。
lightning:actionOverride
是神奇的界面,指示Lightning Experience让我们使用这个组件来覆盖标准的按钮或动作。
设置覆盖
- 回到您的组织中,单击:设置图标并选择设置。
- 点击 Object Manager.
- 点击 Property.
- 点击 Buttons, Links, and Actions.
- 点击 旁边的新建,然后选择 Edit.
- 选择覆盖 Lightning Component Bundle.
- 选择c:PropertyDialog作为要用其覆盖的包。
选择列表将列出组织中具有闪电:actionOverride接口声明的所有组件。
- 点击 Save.
- 点击 然后选择Dreamhouse闪电,然后点击属性。
- 刷新此页面,然后单击新建以创建新的属性。
就在那里!您已使用Lightning组件覆盖了Property对象上的标准New按钮。
注意:如果您没有看到新的表单,则可能需要重新刷新页面。单击属性,刷新页面,然后单击新建。
将SLDS样式添加到我们的闪电组件
朋友之间,你不得不承认,组件不是很漂亮。当您使用Lightning组件作为覆盖时,它会填充整个页面。所以让我们来添加一点SLDS魔术,让它看起来更好。
- 在Developer Console中,将PropertyDialog组件的整个代码替换为:
<aura:component implements="lightning:actionOverride,flexipage:availableForRecordHome,force:hasRecordId" access="global"> <aura:attribute name="picklistValues" type="Object" /> <aura:attribute name="propertyRecord" type="Property__c" /> <force:recordData aura:id="forceRecord" recordId="{!v.recordId}" targetFields="{!v.propertyRecord}" fields="Id,Name,Beds__c,Baths__c,Price__c,Status__c" mode="EDIT" /> <aura:handler name="init" value="{!this}" action="{!c.doInit}" /> <c:PickListValues sObjectName="Property__c" fieldName="Status__c" picklistValues="{!v.picklistValues}" /> <div aura:id="editDialog" role="dialog" tabindex="-1" aria-labelledby="header43" class="slds-modal slds-fade-in-open"> <div class="slds-modal__container"> <div class="slds-modal__header"> <h2 class="slds-text-heading--medium">New Record</h2> </div> <div class="slds-modal__content slds-p-around--medium slds-grid slds-wrap "> <lightning:input aura:id="propName" name="propName" label="Property Name" required="true" class="slds-size--1-of-1 slds-p-horizontal_x-small" /> <lightning:input aura:id="propBeds" name="propBeds" label="Beds" class="slds-size--1-of-2 slds-p-horizontal_x-small" /> <lightning:input aura:id="propBaths" name="propBaths" label="Baths" class="slds-size--1-of-2 slds-p-horizontal_x-small" /> <lightning:input aura:id="propPrice" name="propPrice" label="Price" class="slds-size--1-of-2 slds-p-horizontal_x-small" /> <lightning:select aura:id="propStatus" name="propStatus" label="Status" class="slds-size--1-of-2 slds-p-horizontal_x-small"> <aura:iteration items="{!v.picklistValues}" var="item"> <option value="{!item}">{!item}</option> </aura:iteration> </lightning:select> </div> <div class="slds-modal__footer"> <lightning:button variant="neutral" label="Cancel" /> <lightning:button variant="brand" label="Submit" onclick="{!c.saveRecord}" /> </div> </div> </div> <div aura:id="overlay" class="slds-backdrop slds-backdrop--open"></div> </aura:component>
- 保存文件。
- 在您的组织中,刷新属性页面以查看新模型。如果您不在表单上,然后单击新建以查看它。
现在看起来不太好?
启用取消按钮
- 在开发人员控制台的PropertyDialog组件中,将onclick处理程序onclick =“{!c.cancelDialog}”添加到“取消”按钮。
- 保存文件。
- 切换到PropertyDialogController并添加以下代码以创建一个新的cancelDialog函数,该函数将组件和帮助器作为参数(不要忘记逗号):
cancelDialog : function(component, helper) { }
- 添加以下功能:
var homeEvt = $A.get("e.force:navigateToObjectHome"); homeEvt.setParams({ "scope": "Property__c" }); homeEvt.fire();
- 保存文件。
- 在您的组织中,刷新属性页面,然后单击取消。
你回到属性首页。