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.

questionAnswers(4)

yourAnswerToTheQuestion