上記の答えは正しいですが、アンチパターンです。ほとんどの場合、DOMを変更するか、DOMがロードされるのを待ってから何かを実行する(ドキュメントの準備ができている)場合は、コントローラーではなく、リンク関数で実行します。
angular.module('myModule').directive('someDirective', function() {
return {
restrict: 'E',
scope: {
something: '='
},
templateUrl: 'stuff.html',
controller: function($scope, MyService, OtherStuff) {
// stuff to be done before the DOM loads as in data computation, model initialisation...
},
link: function (scope, element, attributes)
// stuff that needs to be done when the DOM loads
// the parameter element of the link function is the directive's jqlite wraped element
// you can do stuff like element.addClass('myClass');
// WARNING: link function arguments are not dependency injections, they are just arguments and thus need to be given in a specific order: first scope, then element etc.
}
};
});
正直なところ、$ documentまたはangular.elementを有効に使用することは非常にまれであり(コントローラーだけでなくディレクティブを使用することはできません)、ほとんどの場合、デザインを確認する方が適切です。
PS:この質問は古いものですが、それでもいくつかのベストプラクティスを指摘する必要がありました。:)