Mam kilka kontrolerów z pewnym wspólnym kodem, w szczególności z $scope.$watch
, który jest identyczny dla kilku kontrolerów. Jak mogę umieścić ten kod w osobnym pliku i zaimportować wspólny kod w różnych kontrolerach, które tego wymagają: $watch
?Kontrolery AngularJS: Przenieś wspólny kod do oddzielnego pliku
Odpowiedz
Ty mógłby skorzystać z usługi, przekazując w zakresie swojego kontrolera:
angular.module('app').service("CommonFunctions", ['SomeService', function(SomeService) {
var commonFunctions = {};
commonFunctions.init = function(scope){
scope.$watch(function(){},function(){})
};
return commonFunctions;
}]);
angular.module('app').controller('Ctrl1',
['$scope','CommonFunctions',function($scope,CommonFunctions) {
CommonFunctions.init($scope);
}]);
angular.module('app').controller('Ctrl2',
['$scope','CommonFunctions',function($scope,CommonFunctions) {
CommonFunctions.init($scope);
}]);
ten sposób używasz zakresu indywidualnego kontrolera, lecz za pomocą wspólnej metody wewnątrz usługi. Możesz również użyć angular.extend($scope, AService)
w kontrolerze, jeśli chcesz mieć wspólną funkcjonalność usługi faktycznie dodanej do kontrolerów.
Oto pracuje Fiddle: http://jsfiddle.net/rhcjdb7L/
pewien, że to bardzo fajny i wszystko, ale na pewno nie chcesz używać $rootscope.$broadcast()
? Jest to całkiem dobrze napisane: http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/
Nie widzę sensu rozszerzania zakresu $. Masz już usługę. Po prostu wywołaj 'CommonFunctions.init ($ scope)' – cgTag
Masz rację, 'extend()' jest przesadą w tym przypadku, ponieważ nie potrzebujesz tej funkcji w $ scope z jakiegokolwiek powodu. Zrewidowałem swoją odpowiedź. –
Dziękuję wam :) – EricC
- 1. Filozofia AngularJS - kontrolery jako "okna" do usług
- 2. Dosyć drukowany kod SQL z oddzielnego pliku z knitr
- 3. Przenoszenie niestandardowej grupy konfiguracji do oddzielnego pliku
- 4. Wstrzykiwanie JS SDK Facebooka w kontrolery AngularJS
- 5. Jak naprawić wspólny kod JobDSL Jenkins?
- 6. W tym klasa Ruby z oddzielnego pliku
- 7. Jak mogę zalogować błędy Railsy do oddzielnego pliku dziennika?
- 8. Przenieś przycisk do DIV
- 9. PRZENIEŚ DO KARTY SD
- 10. JS: Przenieś DataTransferItemList do WebWorker
- 11. Który kod jest wspólny dla oryginalnego Git i libgit2?
- 12. Gdzie umieścić wspólny kod znaleziony w wielu modelach?
- 13. Jak podłączyć wspólny kod z podstawowego kontrolera w ASP.NET MVC
- 14. Zakodowany kod Base64 do pliku
- 15. AngularJs $ scope undefined, gdy kontrolery znajdują się w module
- 16. Czy skrypt PHP może wykonywać wspólny kod przed zakończeniem()?
- 17. Git - przenieś gałąź do mistrza
- 18. Przenieś się do zaćmienia indygo?
- 19. Przenieś plik/klasę do innego projektu
- 20. Wiele załączników oddzielnego html
- 21. Przenieś lokalne repozytorium Mercurial do Bitbucket
- 22. C++ uwikłany wspólny wskaźnik
- 23. Zapisać plik json do pliku w angularjs ..?
- 24. Wspólny przodek do tablicy Javy i listy
- 25. Korzystanie JMH do kodu wzorcowego bez tworzenia oddzielnego projektu maven
- 26. Największy wspólny dzielnik w Clojure
- 27. Jak dodać kod PHP do pliku .tpl
- 28. Kontrolery niestandardowe do manipulowania [] w Mathematica
- 29. Znajdź najdłuższy wspólny przedrostek?
- 30. Przenieś konstruktor nie nazwie
Czy serwis mógłby za to służyć? – worldask
Jestem prawie pewien, że zakres w usłudze nie jest możliwy ... – EricC
@EricC $ scope będzie po prostu parametrem funkcji usługi. – cgTag