Możesz użyć funkcji Kątowych, aby znaleźć zakres dołączony do elementu i wywołać na nim funkcję. Wolę go oddzielić i znaleźć katalog główny ng-app
i nadać zdarzenie w aplikacji, aby zewnętrzny kod nie znał szczegółów kodu wewnętrznego, z wyjątkiem zdarzenia, które emitujesz.
angular.$externalBroadcast = function (selector, event, message) {
var scope = angular.element(selector).scope();
scope.$apply(function() {
scope.$broadcast(event, message);
});
};
Następnie z dowolnego kodu, można nazwać coś takiego:
angular.$externalBroadcast('#app-container', 'doSomething', parameters);
i wewnątrz aplikacji, chciałbym zrobić coś takiego:
$rootScope.$on('doSomething', function(parameters) {
// handle the external event.
});
Jeśli don” Takie podejście, po prostu zasięg:
var scope = angular.element(selector).scope();
I zrób coś z tym. Po prostu upewnij się, że dzwonisz pod numer scope.$apply
, bo inaczej cykl trawienia się nie stanie.
W powyższej sytuacji istnieje sposób na uzyskanie fabryki lub zakresu dyrektywy? –
Nvm. Wygląda na to, że zasięg, jaki otrzymujesz, to rootScope. Dołączyłem usługę do zakresu głównego i mogłem ją nazwać tak, jak potrzebowałem. Dzięki za to! –