まとめ
form.cmp が初期化されると、init ハンドラがクライアント側の doInit コントローラをトリガし、そのコントローラが getExpenses ヘルパー関数をコールします。getExpenses は、経費を読み込むためにサーバ側の getExpenses コントローラをコールします。コールバックが、v.expenses 属性の経費データを設定し、カウンタを更新するために updateTotal をコールします。
[送信] ボタンをクリックすると、クライアント側の createExpense コントローラがトリガされます。項目の検証後、createExpense ヘルパー関数が実行され、そこでは upsertExpense ヘルパー関数によってサーバ側の saveExpense コントローラがコールされ、レコードが保存されます。コールバックは、新しい経費を経費リストに転送し、form.cmp の v.expenses 属性を更新します。これにより、expenseList.cmp の経費が更新されます。最後に、ヘルパーが updateTotal をコールし、v.total および v.exp 属性で示されるカウンタを更新します。
expenseList.cmp が、経費のリストを表示します。[Reimbursed? (払い戻し済み?)] チェックボックスをオン/オフにすると、click イベントがクライアント側の update コントローラをトリガします。パラメータとして渡された関連経費を使用して、updateExpenseItem イベントが起動されます。form.cmp がイベントを処理し、クライアント側の updateEvent コントローラをトリガします。このコントローラアクションが upsertExpense ヘルパー関数をコールし、このヘルパー関数がサーバ側の saveExpense コントローラをコールして関連レコードを保存します。