AngularJSのポイント
自分用メモ
・モジュールと呼ばれる構造の一部としてコントローラを定義する
・{{ }} は初期表示には向かない、ng-bindがよい(初期のみ)
・ng-changeはユーザーによる変更のみ、同じプロパティに関連付けされている別のフィールドが変更された場合や、サーバーからデータを取得する場合は対応できない、$watchがよい
・ng-submitはブラウザによる通常のフォーム送信をしない(フォームタグでも)
・ブラウザ間の差異はAngularJSが吸収する
・Angular式は対象コントローラ内のみアクセス可能、グローバルでない
・アプリケーションロジックのユニットテストをDOMを使わずに書く
・表示/非表示はng-showやng-hideを使う
・CSS系はng-classやng-styleを使う
・src属性やhref属性は読み込みが早いため、単純に {{ }} で埋め込んでも×、ng-srcやng-hrefを使う
・コントローラを小さく、かつ、管理の容易なものにするためにビューの中で機能を持った単位ごとに1つずつコントローラを用意する、例えば、メニュー用コントローラ、パンくずリスト用コントローラなど
・$watchの第3引数は対象の配列やオブジェクトが大きい場合、処理の負荷が高くなる。
・$watchは関数を戻り値として返す。(監視解除関数)
・モデルへの変更が完了しているかどうか確認ためにAngularJSは10回までチェックを繰り返す。ただし、Object.observe()というネイティブ実装が取り込まれれば気にする必要ない。
・BatarangはChrome拡張、負荷の高いデータバインディングを自動ハイライトする。
・$watchでwatchFnだけ指定して高速化
・モジュールを使うと、アプリケーションの機能ごとに依存関係をグループ化でき、その依存先を自動的に取得できる。
・サービスはシングルトン($location、$http、$routeなど)
・サービスを生成するための関数3つ
・$routeサービスはURLに応じて異なるテンプレートを読み込む。
・ng-viewで切替場所(DOM)を指定する。
・URL変更でビューが切り替わる、ブラウザの進む戻るが効く、実際にはHTMLのページは1つだけだが、ユーザーは各ビューをブックマークしたり、リンク共有したりできる。
・$http、サーバーとの通信を行うコードは、コントローラ間で共有できるようにサービスとして定義するのがよい。
・ディレクティブを自分で作成、定義できる。
・HTML5の属性等を書いたとき、HTML5に対応していないブラウザにも同等の機能を追加することをポリフィル(polyfill)と呼ぶ。