🅰️

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

2021/07/04に公開

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

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

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

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

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

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


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

Discussion