Humanity

Edit the world by your favorite way

AngularJSメモ

最近仕事でAngular.js(1.x)を使っていてさっとページを作れるのが楽しい。
SPAアプリ*1はずっと前、インフラエンジニアだった頃に毎朝送られてくるsyslogを解析するHTMLページを(prototype.jsで)作った記憶があるのだけど、その頃にAngularがあればかなり早く作れただろうと思う。*2
ちなみにその会社からは離職したのでsyslog解析ページがその後使われてるかは知らない。
プログラマはいない現場だったので、ふと動かなくなってすぐ捨てられたかもしれない。


  • factoryを使っても$rootScopeを使って元の$scopeにアクセスできるので、関数群をfactory側からエクスポート(controllerから見ればインポート)できる
  • minifyで変数名が変わってしまうので、DIする際はちゃんと文字列で変数名を書いた方がいい
  • Serviceとは「1.x の module.service() ではなくて、ざっくり言うと Directive でないものの総称です」

受け渡しについては以下の記事がよくまとまっている。

  1. Angular JS で複数のコントローラ間でモデル(状態や値)を共有する方法 3 種類 - Qiita
    1. Shared Service (2.4と同じ)
    2. Parent Scope Sharing
    3. Pub/Sub (2.5と同じ)
  2. [AngularJS] 画面遷移時における値の受け渡し方法いろいろ | Developers.IO
    1. 自前グローバルオブジェクトを使う (いやいや…)
    2. $rootScope ( 親 $scope ) のプロパティを使う
    3. $routeParams を使う
    4. 自前 Service コンポーネントを使う (1.1と同じ)
    5. $rootScope ( 親 $scope ) の$on(), $broadcast(), $emit() メソッドを使う (1.3と同じ)
      • 別に$rootScopeでなくてもいいのでは…

*1:馬から落馬

*2:制約が多い現場だったので、ブラウザなら皆入れてるのでそれを使おうという発想だった。5MBのメールが送られてきてログの量がかなり多くなってもソートして二分探索したり結構頑張ってた記憶がある。config.jsとかで設定も変えられた。