Por que $ elemento está disponível / injetado no controlador?
Em AngularJS, notei que um controlador é injetado com$element
, que é um wrapper JQuery / JQLite do elemento que o controlador está controlando. Por exemplo:
<body ng-controller="MainCtrl">
Então você pode ter acesso ao elemento body no controlador, injetando$element
app.controller('MainCtrl', function($scope, $element) { ...
Isso pode ser visto trabalhando emeste Plunkr.
E parece ser confirmado como uma característica deliberada nodocs para $ compile
Minhas perguntas são:
À luz dos vários guias e tutoriais que sugerem que você não deve acessar o DOM em um controlador, por que isso é possível?
Existe algum caso de uso não-hacky para isso?
Há algum exemplo disso sendo usado no código disponível em algum lugar?
Obrigado.