Sądzę, że możliwe jest posiadanie wielu modułów kątowych dołączonych do różnych regionów w obrębie jednej strony powłoki. Ale czy moduły w AngularJS "rozmawiają" ze sobą? Jeśli tak, w jaki sposób?Komunikacja między modułami w AngularJS
Odpowiedz
Istnieją różne sposoby, moduł może oddziaływać lub udostępniać informacje
Moduł może być wstrzyknięty do innego modułu, w którym to przypadku moduł pojemnik ma dostęp do wszystkich elementów wtryskiwanego modułu. Jeśli spojrzeć na angular seed projekcie moduły tworzone są w przypadku dyrektywy, Sterowniki, filtry itp, coś takiego
angular.module ("myApp" [ "myApp.filters", "myApp.services", „myApp.directives "," myApp.controllers "]) Jest to raczej mechanizm re usability niż mechanizm komunikacji.
Drugą opcją jest wyjaśnienie, że @Eduard będzie używał usług. Ponieważ usługi są pojedynczo i mogą być wstrzykiwane do dowolnego kontrolera, mogą działać jako mechanizm komunikacji.
Jako że @Eduard ponownie wskazał, trzecią opcją jest użycie kontrolera nadrzędnego za pomocą obiektu $ scope, ponieważ jest on dostępny dla wszystkich kontrolerów podrzędnych.
Możesz również wprowadzić $ rootScope do kontrolerów, które muszą wchodzić w interakcje i używać metod $ broadcast i $ on, aby utworzyć wzorzec szyny serwisowej, w którym kontrolery współdziałają z mechanizmem pub \ sub.
Chciałbym skłaniać się w kierunku 4 opcji. Zobacz także tutaj więcej szczegółów: What's the correct way to communicate between controllers in AngularJS?
Można użyć services i kontrolery dziedziczenia (wyjaśnione tutaj http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller)
w każdym przypadku, shuold rozważyć nie posiadające kontrolerów tighlty sprzężone.
[link] (http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller) jest uszkodzony można go naprawić –
Używanie mechanizmu serwisowego do komunikacji między kontrolerami modułu.
(function() {
'use strict';
//adding moduleB as dependency to moduleA
angular.module('Myapp.moduleA', ['Myapp.moduleB'])
.controller('FCtrl', FCtrl)
.service('sharedData', SharedData);
//adding the dependency shareData to FCtrl
FCtrl.$inject = ['sharedData'];
function FCtrl(sharedData) {
var vm = this;
vm.data = sharedData.data;
}
//shared data service
function SharedData() {
this.data = {
value: 'my shared data'
}
}
//second module
angular.module('Myapp.moduleB', [])
.controller('SCtrl', SCtrl);
SCtrl.$inject = ['sharedData'];
function SCtrl(sharedData) {
var vm = this;
vm.data = sharedData.data;
}
})();
I HTML następująco:
<html ng-app="firstModule">
<body>
<div ng-controller="FCtrl as xyz">
<input type=text ng-model="xyz.data.value" />
</div>
<div ng-controller="SCtrl as abc">
<input type=text ng-model="abc.data.value" />
</div>
</body>
</html>
- 1. Udostępnianie pamięci między modułami
- 2. Komunikacja między wątkami w PySide
- 3. komunikacja między kartą przeglądarki
- 4. Komunikacja między aplikacjami?
- 5. C# komunikacja między wątkami
- 6. Komunikacja między zagnieżdżonymi dyrektywami
- 7. Komunikacja między dwoma wątkami
- 8. komunikacja websocket między serwerami
- 9. Zależności między nagłówkami plików między modułami C++
- 10. Modele ZF2 udostępnione między modułami
- 11. Udostępnianie zmiennych między modułami w JavaScript/node.js?
- 12. Różnica między INCLUDE i modułami w Fortranie
- 13. Udostępnianie pakietów Java między modułami w IntelliJ?
- 14. Różnica między modułami i rozszerzeniem w Yii
- 15. Zależności między modułami w Boost Python
- 16. Routing między modułami w Angular 2
- 17. C# - WCF - komunikacja między procesami
- 18. Komunikacja między Pythonem i Matlabem
- 19. Angular - nieudokumentowana komunikacja między dziećmi?
- 20. Komunikacja między SAP i C#
- 21. Komunikacja między dwoma skrypty python
- 22. komunikacja między dwoma elastycznymi aplikacjami
- 23. Komunikacja między obrazami w Smalltalk. Możliwy?
- 24. Komunikacja między fragmentami/okienkami w Androidzie
- 25. Dobre praktyki dzielenia zasobów między modułami?
- 26. Ruby - współudział loggera między modułami/klasami
- 27. PyroCMS: jak udostępniać zasoby między modułami?
- 28. Jak udostępnić tę samą zmienną między modułami?
- 29. Czy między modułami platformy dozwolone są cykle?
- 30. Komunikacja między procesami między wojnami w tym samym pojemniku
jestem pójdzie z czwartą opcją. Dziękuję Ci bardzo. –
Jestem trochę zdezorientowany (na nr 4, aby być bardziej szczegółowym). Dokumentacja stwierdza, że każda aplikacja ma swój własny $ $ rootScope. Kiedy mówisz, że '$ rootScope' wymaga wtryśnięcia, masz na myśli to, że' $ rootScope' z 'firstModule' musi zostać wstrzyknięty do kontrolera' secondModule'? Aplikacja –
nie jest modułem. Zasadniczo jest to tylko jedna aplikacja z wieloma modułami. '$ rootscope' jest współdzielony przez moduły w jednej aplikacji. – Chandermani