AngularJSでは, <input type=”file” />にng-changeでイベントハンドラを設定してもうまくいかない. そこで, ディレクティブを作成するという解決方法がセオリー (らしい) ポイントは, directiveの作成で, コールバック関数が返すオブジェクトにlinkプロパティを設定することです. ここで, Fileオブジェクトを取得するためのイベント処理を定義しておきます. あとは, <input type=”file”>の属性にディレクティブ名を指定するだけです. このとき注意すべきことは, 属性名にハイフン (-) を使うのはOKですが, その場合, ディレクティブ名はハイフンを除いて, ローワーキャメル形式 (先頭の単語以外の1文字目を大文字にしてつなぐ命名形式) にしないとダメです.