レコードの保存
Salesforce1 に組み込まれたレコードの作成および編集ページを利用して、Lightning コンポーネントからレコードを作成または編集することができます。
次のコンポーネントには、クライアント側コントローラをコールしてレコードの編集ページを表示するボタンがあります。
クライアント側コントローラから、指定された取引先責任者 ID を持つレコードの編集ページを表示する force:recordEdit イベントが起動されます。このイベントを正しく処理するには、コンポーネントが Salesforce1 に含まれている必要があります。
1<aura:component>
2 <ui:button label="Edit Record" press="{!c.edit}"/>
3</aura:component>1edit : function(component, event, helper) {
2 var editRecordEvent = $A.get("e.force:editRecord");
3 editRecordEvent.setParams({
4 "recordId": component.get("v.contact.Id")
5 });
6 editRecordEvent.fire();
7}force:recordEdit イベントを使用して更新されたレコードは、デフォルトにより保持されます。
Lightning コンポーネントを使用したレコードの保存
または、ユーザがレコードを追加できるカスタムフォームを提供する Lightning コンポーネントを指定することもできます。新しいレコードを保存するには、クライアント側コントローラを Apex コントローラに結び付けます。次のリストに、コンポーネントおよび Apex コントローラを使用してレコードを保持する方法を示します。
upsert 操作で行う更新を保存する Apex コントローラを作成する。次の例に、レコードデータを更新/挿入する Apex コントローラを示します。
1@AuraEnabled
2public static Expense__c saveExpense(Expense__c expense) {
3 // Perform isUpdateable() check here
4 upsert expense;
5 return expense;
6}コンポーネントからクライアント側コントローラをコールする。たとえば、「<ui:button label="Submit" press="{!c.createExpense}"/>」などです。
クライアント側コントローラで、項目入力規則を提供し、レコードデータをヘルパー関数に渡す。
1createExpense : function(component, event, helper) {
2 // Validate form fields
3 // Pass form data to a helper function
4 var newExpense = component.get("v.newExpense");
5 helper.createExpense(component, newExpense);
6}コンポーネントヘルパーで、サーバ側コントローラのインスタンスを取得し、コールバックを設定する。次の例では、カスタムオブジェクトでレコードを更新/挿入します。setParams() は、サーバ側コントローラの saveExpense() メソッドで expense 引数の値を設定します。
1createExpense: function(component, expense) {
2 //Save the expense and update the view
3 this.upsertExpense(component, expense, function(a) {
4 var expenses = component.get("v.expenses");
5 expenses.push(a.getReturnValue());
6 component.set("v.expenses", expenses);
7 });
8},
9upsertExpense : function(component, expense, callback) {
10 var action = component.get("c.saveExpense");
11 action.setParams({
12 "expense": expense
13 });
14 if (callback) {
15 action.setCallback(this, callback);
16 }
17 $A.enqueueAction(action);
18}