Wiem, że $scope
z controller
może być udostępniony do funkcji łącza w directives
.Zachowanie kontrolera wewnątrz dyrektyw
Na przykład, w tym kodzie mogę wywołać funkcję od deklarowanej kontrolera do wydrukowania „Hello World” na konsoli przeglądarki:
.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, to działa prawidłowo.
Moje pytania są:
- W tym podejściu jest to SAME zakres które będą dzielone pomiędzy kontrolerem a dyrektywą?
- Jakie są konsekwencje zastosowania tego podejścia? Załóżmy, że będę nie manipulować
DOM
elementów wcontroller
, tylko wlink function
. - Naprawdę muszę unikać manipulowania elementami DOM w tym
controller
? Nawet jeśli numery$scope
,$elem
itp. Są takie same?
Oto pytania, których nie znalazłem na Angular Directive documentation.
Here's a plunker with the sample code.
Polecam sprawdzenie filmów z instrukcjami dotyczącymi jaj. Te były naprawdę przydatne dla mnie. http://www.egghead.io/ –
@NuclearGhost dzięki za komentarz. Widziałem już prawie wszystkie filmy z jajami. Sprawdziłem też jeszcze raz, aby znaleźć jakieś uaktualnienie ... ale nie pamiętam, żeby mówił coś o tym, o co tutaj pytałem w jakimkolwiek filmie = ( –
nie wylogował się z konsoli "Hello World" to się nie zdefiniował –