Suppongo che sia possibile avere molti moduli angolari collegati a regioni diverse all'interno di una pagina shell. Ma i moduli in AngularJS "parlano" tra loro? Se sì, come?Comunicazione tra moduli in AngularJS
risposta
Ci sono vari modi modulo può interagire o condividere informazioni
Un modulo può essere iniettato in un altro modulo, nel quale caso il modulo contenitore ha accesso a tutti gli elementi del modulo iniettato. Se si guarda il progetto angular seed, i moduli vengono creati per direttiva, controller, filtri, ecc., Come
angular.module ("myApp", ["myApp.filters", "myApp.services", "myApp.directives "," myApp.controllers "]) Questo è più un meccanismo di riusabilità piuttosto che un meccanismo di comunicazione.
La seconda opzione, come spiegato da @Eduard, è l'utilizzo dei servizi. Poiché i servizi sono singleton e possono essere iniettati in qualsiasi controller, possono fungere da meccanismo di comunicazione.
Come già indicato da @Eduard, la terza opzione consiste nell'utilizzare il controller padre utilizzando l'oggetto $ scope come è disponibile per tutti i controller figlio.
È inoltre possibile iniettare $ rootScope in controller che devono interagire e utilizzare i metodi $ broadcast e $ on per creare un modello di bus di servizio in cui i controller interagiscono utilizzando il meccanismo pub \ sub.
Mi sporgo verso la quarta opzione. Vedere ulteriori dettagli anche qui What's the correct way to communicate between controllers in AngularJS?
È possibile utilizzare services e controllori eredità (spiegato qui http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller)
in ogni caso, si considera shuold non avere i controller tighlty accoppiati.
[link] (http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller) è rotto si può risolvere il problema –
Utilizzo del meccanismo di servizio per comunicare tra i controller del modulo.
(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;
}
})();
E il codice HTML come segue:
<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. Comunicazione tra moduli con Prism?
- 2. Comunicazione Angularjs tra controller in diverse schede
- 3. Comunicazione tra moduli nel kernel Linux
- 4. condivisione tra moduli con AngularJS?
- 5. Comunicazione controller pesante in AngularJS
- 6. Comunicazione direttiva-direttiva in AngularJS?
- 7. Comunicazione evento Angularjs tra direttive con pubblicazione/sottoscrizione
- 8. Come condividere i dati tra due moduli in AngularJS?
- 9. Come distinguere tra i namespace dei moduli iniettati in AngularJS?
- 10. comunicazione tra servlet remoto
- 11. C# Comunicazione tra thread
- 12. Comunicazione iframe tra domini
- 13. MVP Comunicazione tra relatori?
- 14. dipendenze dei moduli angularjs
- 15. Comunicazione tra iFrame?
- 16. Comunicazione tra applicazioni
- 17. Comunicazione tra OCaml e Python
- 18. Comunicazione tra Python e Matlab
- 19. Comunicazione tra script | Tre metodi
- 20. comunicazione tra 2 programmi in python
- 21. comunicazione tra due processi in esecuzione node.js
- 22. comunicazione tra due app flessibili
- 23. Comunicazione tra SAP e C#
- 24. Opzioni di comunicazione tra processi
- 25. comunicazione tra due script python
- 26. Comunicazione Android tra due applicazioni
- 27. Backbone.js: comunicazione tra le viste
- 28. Comunicazione tra due dispositivi iOS
- 29. Android - comunicazione tra due dispositivi
- 30. Confronto tra stringhe in AngularJS
Sono andando per andare con la quarta opzione. Grazie mille. –
Qui sono un po 'confuso (al numero 4 per essere più specifico). La documentazione afferma che ogni app ha il suo '$ rootScope'. Quando dici che il '$ rootScope' deve essere iniettato, vuoi dire che' $ rootScope' da 'firstModule' deve essere iniettato nel controller del' secondModule'? L'app –
non è un modulo. Generalmente è solo una app, con più moduli al suo interno. '$ rootscope' è condiviso tra i moduli in un'unica app. – Chandermani