レコードの削除
Lightning Data Service を使用してレコードを削除するには、force:recordPreview コンポーネントのdeleteRecord をコールして、削除操作の完了後に呼び出されるコールバック関数を渡します。
Lightning Data Service の削除操作は単純明快です。force:recordPreview タグに最小限の詳細を含めることができます。レコードデータが不要になる場合は、fields 属性を単に Id に設定します。削除が唯一の操作であることがわかっている場合は、任意の mode を使用できます。
削除操作を実行するには、適切なコントローラアクションハンドラから、force:recordPreview コンポーネントの deleteRecord をコールします。deleteRecord は、操作の完了時に呼び出されるコールバック関数という 1 つの引数を取ります。このコールバック関数は、その唯一のパラメータとして SaveRecordResult オブジェクトを受け取ります。SaveRecordResult には、操作の成否や、結果の処理に使用できるその他の詳細を示す state 属性が含まれます。
レコードの削除
次の例は、Lightning Data Service を使用したレコードの削除の要点を示しています。このコンポーネントは、[レコードを削除] ボタンをレコードページに追加して、表示されているレコードを削除できるようにします。レコード ID は、force:hasRecordId インターフェースによって追加される暗黙的な recordId 属性によって指定されます。
ldsDelete.cmp
force:recordPreview タグには、recordId と、最少限絶対必要なものだけを記載したほぼ空の fields リストのみが含まれます。たとえば、確認メッセージの一部として、ユーザインターフェースにレコード値を表示したい場合は、この最小限の削除例ではなく、読み込み操作の場合と同様に、force:recordPreview タグを定義します。
1<aura:component
2 implements="flexipage:availableForRecordHome,force:hasRecordId">
3
4 <aura:attribute name="recordError" type="String" access="private"/>
5 <force:recordPreview aura:id="recordHandler"
6 recordId="{!v.recordId}"
7 fields="Id"
8 targetError="{!v.recordError}"
9 />
10
11 <!-- Display Lightning Data Service errors, if any -->
12 <aura:if isTrue="{!not(empty(v.recordError))}">
13 <div class="recordError">
14 <ui:message title="Error" severity="error" closable="true">
15 {!v.recordError}
16 </ui:message>
17 </div>
18 </aura:if>
19
20 <div class="slds-form-element">
21 <ui:button
22 label="Delete Record"
23 press="{!c.handleDeleteRecord}"
24 class="slds-button slds-button--brand" />
25 </div>
26
27</aura:component>
ldsDeleteController.js
レコードが削除された時点で、別のページに移動する必要があります。そのレコードページに留まれば、コンポーネントが更新されたときに「レコードが見つかりません」というエラーが表示されます。ここでは、コールバック関数に提供された SaveRecordResult の entityApiName プロパティをコントローラが使用して、オブジェクトのホームページに移動します。
1({
2 handleDeleteRecord: function(component, event, helper) {
3 component.find("recordHandler").deleteRecord($A.getCallback(function(saveResult) {
4 if (saveResult.state === "SUCCESS" || saveResult.state === "DRAFT") {
5
6 // Deleted! Show a toast UI message
7 var resultsToast = $A.get("e.force:showToast");
8 resultsToast.setParams({
9 "title": "Deleted",
10 "message": "The record was deleted."
11 });
12 resultsToast.fire();
13
14 // Navigate to deleted record's object home
15 var goToObjectHome = $A.get("e.force:navigateToObjectHome");
16 goToObjectHome.setParams({
17 "scope": saveResult.entityApiName
18 });
19 goToObjectHome.fire();
20 }
21 else if (saveResult.state === "INCOMPLETE") {
22 console.log("User is offline, device doesn't support drafts.");
23 }
24 else if (saveResult.state === "ERROR") {
25 console.log('Problem deleting record, error: ' +
26 JSON.stringify(saveResult.error));
27 }
28 else {
29 console.log('Unknown problem, state: ' + saveResult.state +
30 ', error: ' + JSON.stringify(saveResult.error));
31 }
32 }));
33 }
34})