この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

レコードの削除

Lightning データサービスを使用してレコードを削除するには、force:recordData コンポーネントの deleteRecord をコールして、削除操作の完了後に呼び出されるコールバック関数を渡します。フォームベースのコンポーネント (例: lightning:recordForm) は、現時点ではレコードの削除をサポートしていません。

Lightning データサービスの削除操作は単純明快です。force:recordData タグに最小限の詳細を含めることができます。レコードデータが不要になる場合は、fields 属性を単に Id に設定します。削除が唯一の操作であることがわかっている場合は、任意の mode を使用できます。

削除操作を実行するには、適切なコントローラアクションハンドラから、force:recordData コンポーネントの deleteRecord をコールします。deleteRecord は、操作の完了時に呼び出されるコールバック関数という 1 つの引数を取ります。このコールバック関数は、その唯一のパラメータとして SaveRecordResult オブジェクトを受け取ります。SaveRecordResult には、操作の成否や、結果の処理に使用できるその他の詳細を示す state 属性が含まれます。

レコードの削除

次の例は、Lightning データサービスを使用したレコードの削除の要点を示しています。このコンポーネントは、[レコードを削除] ボタンをレコードページに追加して、表示されているレコードを削除できるようにします。レコード ID は、force:hasRecordId インターフェースによって追加される暗黙的な recordId 属性によって指定されます。

ldsDelete.cmp
1<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId">
2
3    <aura:attribute name="recordError" type="String" access="private"/>
4  
5    <force:recordData aura:id="recordHandler"
6        recordId="{!v.recordId}"
7        fields="Id"
8        targetError="{!v.recordError}"
9        recordUpdated="{!c.handleRecordUpdated}" />
10        
11    <!-- Display the delete record form -->
12    <div class="Delete Record">
13        <lightning:card iconName="action:delete" title="Delete Record">
14            <div class="slds-p-horizontal--small">
15                <lightning:button label="Delete Record" variant="destructive" onclick="{!c.handleDeleteRecord}"/>
16            </div>
17        </lightning:card>
18    </div>
19        
20    <!-- Display Lightning Data Service errors, if any -->
21    <aura:if isTrue="{!not(empty(v.recordError))}">
22        <div class="recordError">
23            {!v.recordError}</div>
24    </aura:if>
25</aura:component>
force:recordData タグには、recordId と、最小限絶対必要なものだけを記載したほぼ空の fields リストのみが含まれます。たとえば、確認メッセージの一部として、ユーザインターフェースにレコード値を表示したい場合は、この最小限の削除例ではなく、読み込み操作の場合と同様に、force:recordData タグを定義します。
ldsDeleteController.js
1({
2    handleDeleteRecord: function(component, event, helper) {
3        component.find("recordHandler").deleteRecord($A.getCallback(function(deleteResult) {
4            // NOTE: If you want a specific behavior(an action or UI behavior) when this action is successful 
5            // then handle that in a callback (generic logic when record is changed should be handled in recordUpdated event handler)
6            if (deleteResult.state === "SUCCESS" || deleteResult.state === "DRAFT") {
7                // record is deleted
8                console.log("Record is deleted.");
9            } else if (deleteResult.state === "INCOMPLETE") {
10                console.log("User is offline, device doesn't support drafts.");
11            } else if (deleteResult.state === "ERROR") {
12                console.log('Problem deleting record, error: ' + JSON.stringify(deleteResult.error));
13            } else {
14                console.log('Unknown problem, state: ' + deleteResult.state + ', error: ' + JSON.stringify(deleteResult.error));
15            }
16        }));
17    },
18
19    /**
20     * Control the component behavior here when record is changed (via any component)
21     */
22    handleRecordUpdated: function(component, event, helper) {
23        var eventParams = event.getParams();
24        if(eventParams.changeType === "CHANGED") {
25           // record is changed
26        } else if(eventParams.changeType === "LOADED") {
27            // record is loaded in the cache
28        } else if(eventParams.changeType === "REMOVED") {
29            // record is deleted, show a toast UI message
30            var resultsToast = $A.get("e.force:showToast");
31            resultsToast.setParams({
32                "title": "Deleted",
33                "message": "The record was deleted."
34            });
35            resultsToast.fire();
36
37        } else if(eventParams.changeType === "ERROR") {
38            // there’s an error while loading, saving, or deleting the record
39        }
40    }
41})
レコードが削除された時点で、別のページに移動します。移動しないと、コンポーネントが更新されたときに「レコードが見つかりません」というエラーが表示されます。ここでは、コールバック関数に提供された SaveRecordResultobjectApiName プロパティをコントローラが使用して、オブジェクトのホームページに移動します。