Comportamento do controlador dentro de diretivas
Eu sei que um$scope
a partir de umcontroller
pode ser compartilhado com uma função de linkdirectives
.
Por exemplo, neste código, posso chamar uma função do controlador declarado para imprimir 'Hello World' no console do navegador:
.directive('myDirective', [function () {
return {
restrict : 'E',
replace : true,
controller: 'MyController',
templateUrl : 'directives/myDirective.tpl.html',
link : function (scope, elem, attrs, controller) {
scope.message = 'Hello World!';
}
};
}])
.controller('MyController', [function ($scope, $element, $attrs, $log, $timeout) {
// $timeout to wait the link function to be ready.
$timeout(function () {
// This prints Hello World as expected.
$log.debug($scope.message);
});
});
}])
Ok, isso funciona bem.
Minhas perguntas são:
Nesta abordagem, é oMESMO escopo que será compartilhado entre o controlador e a diretiva?Quais são as consequências para usar essa abordagem? Vamos supor que eu vounão manipularDOM
elementos emcontroller
, somente emlink function
.Eu realmente preciso evitar manipular elementos DOM nestecontroller
? Mesmo se o$scope
, $elem
, etc são os mesmos?Estas são perguntas que eu não encontreiDocumentação da Diretiva Angular.