Bonjour,

j ai 2 pages dans une application mobile je veux a partir de page1 envoyer des Variable par exemple X=10,COLOR=#989898 a la page 2 sans perdre les valeurs
je suis debutant en angularJS
merci pour tous reponse

6 réponses


Salut,

Tu peux soit utiliser les cookies, soit le localStorage, soit tout simplement stocker temporairement les variables dont tu as besoin dans ton $rootScope (à condition qu'il soit partagé entre tes pages). Quelle est l'archi de ton app ?

@betaWeb, $rootScope est un anti-pattern. Les cookies et le localStorage ne sont pas fait pour ca a la base. @debianiam, tu dois utiliser un service angularjs.

@prbaron qu'entends-tu par "$rootScope est un anti-pattern" ?

$rootScope ne doit pas etre utilisé pour stocker des données. Il s'agit du scope racine (comme son nom l'indique) donc en effet tous les elements de l'application y ont acces, seulement ce n'est pas son role de stocker des variables ou en tout cas pas des variables transients. Il s'agit du meme anti-pattern que de stocker des variables transients dans l'objet window. Utiliser $rootScope va rendre l'application plus dure à tester et à maintenir.

Salut debianiam,

La meilleure solutions pour partager des données entre tes controllers et d'utiliser un service / factory.
Tu peux aussi envoyer les données d'un controller à un autre via l'URL en adaptant ton routing et en utilisat $routeParams

---Dans ton routing --
.when( 'page1/:variableX
controller: 'MainCtrl',
templateUrl: 'page1' }
);

-- Dans ton controller --
var maVariable = $routeParams.:variableX;

ex : http://stackoverflow.com/questions/11758079/how-to-get-the-url-parameters-using-angular-js--

Je rejoins ce qui a été dit plus haut. L'utilisation de rootScope est déconseillé, et même l'utilisation de $scope n'est pas une bonne pratique
https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#controllers