Ho questo codice:Come utilizzare un controller per due direttive?
JS:
angular.module("module")
.controller("fooController", ["$scope", function($scope) {
...
})
.directive("foo", function() {
return {
restrict: "E",
controller: "fooController",
link: function($scope, $element, $attrs) {
// Do some things with the scope of the controller here
}
}
})
.directive("bar", function() {
return {
restrict: "E",
require: "fooController",
link: function($scope, $element, $attrs) {
// Nothing yet
}
}
});
HTML:
<html>
<head>
<!-- Scripts here -->
</head>
<body ng-app="module">
<foo/>
<bar/>
</body>
</html>
direttiva foo
opere, ma la direttiva bar
genera un errore: No controller: fooController
.
Come posso risolvere questo problema mantenendo la mia struttura attuale (il controller non è all'interno dell'HTML, ma è utilizzato dalle direttive, bar
è all'esterno dello foo
e condivide lo stesso controller, mentre entrambi stanno modificando il suo ambito)? Ho letto la discussione here, ma non riuscivo a capire come farlo.
Solo per curiosità, perché stai utilizzando lo stesso controller per entrambe le direttive? – callmekatootie
Ho bisogno di condividere alcuni dati tra di loro. Conosci un modo migliore per farlo? – tgkokk
Sì - Servizi! '$ rootScope' fa anche il trucco, ma sarà disapprovato. http://stackoverflow.com/questions/9293423/can-one-controller-call-another-in-angularjs - questo è tutto ciò che devi sapere per comunicare tra i controller. – callmekatootie