🅰️

AngularJSのインスタンスはどこにあるか

1 min read

2014/09/05 に Qiita に投稿した記事のアーカイブです。本文中のリンクは動作しないことがあります。

AngularJSはシングルトンでありながらDIを使って各Moduleや各Providerが独立して動作しています。そんなAngularJSのインスタンスは、ブラウザ上での動作中にどこにあるのかと思い調べてみるとwindow直下にはいませんでした。

本体のソースコードを順番に読みながら辿っていると、実はjQueryでDOMを読んでいるだけということが分かり拍子抜け。

$('body').data().$scope;

実はこれだけでOK。でもこれはプロパティを直接覗いて行儀が悪いので、以下の方がいいか。

angular.element('body').scope();

なんにせよ、デバッグ以外で何かを参照、取得するのに使うべきではありません。


(AngularJS外のソースで$scopeを取得して$apply()する力技も有るっちゃ有るみたいですが、個人的にはServiceを作って中で操作したい。)

Discussion

ログインするとコメントできます