124
5
章 サーバとの通信
では
false
)もこのオブジェクトの中で指定します。このような指定によって、(ユーザーが支払
いを行えば)いつでも
CreditCard.charge()
を呼び出せるようになります。
5.3.3
(本当に必要なのでなければ)コールバックは利用するべきではない
リ ソ ー ス に 対 す る メ ソ ッ ド 呼 び 出 し の 戻 り 値 も 注 目 に 値 し ま す。 例 え ば こ の コ ー ド の
CreditCard.query()
では、カードのデータはコールバック関数に渡されるのではなく
cards
変
数に直接セットされています。サーバへのリクエストは非同期形式なのに、このようなコードは正
しく機能するのでしょうか。
読者が心配になるのももっともですが、このコードは実際に正しく機能します。ここでは
AngularJS
によって参照先(オブジェクトまたは配列。期待される戻り値の型に応じて使い分けら
れます)が割り当てられ、実際の値はサーバからレスポンスが返されたときにセットされます。つ
まり、このオブジェクトは一時的に空の状態になります。
サーバからデータを取得して変数にセットしテンプレートに表示するという処理は、
AngularJS
アプリケーションの中で頻繁に行われます。そのため、このようにシンプルなコードは非常に便利
です。コントローラのコードの中で、サーバを呼び出し
$scope
内の変数に戻り値をセットするだ
けで、後は何もしなくてもテンプレートが描画を行ってくれます。 ...