Bonjour,
Je bute actuellement sur les services d'AngularJs. J'utilise une factory pour pouvoir faire passer la valeur d'un input du controller1 au controller 2 dans un exemple très simple. Ci-joint le code :
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Le titre du document</title>
<link rel="stylesheet" type="text/css" href="">
</head>
<body ng-app="principe">
<div class="col-lg-10">
<div ng-controller="controller1 as vm">
<input ng-model="vm.entree" ng-blur="vm.modifier(vm.entree)"></input>
</div>
</div>
<div ng-controller="controller2 as vm" >
{{vm.detailsRDV}}
</div>
<script type="text/javascript" src="angular-1.5.5/angular.min.js"></script>
<script>
var principe=angular.module('principe', []);
principe.controller('controller1',['ShareDataService', function(ShareDataService){
var vm=this;
vm.entree="sdqsdqsd"
vm.modifier= ShareDataService.envoiNom
}])
principe.controller('controller2',['ShareDataService', function(ShareDataService) {
var vm=this;
vm.detailsRDV = ShareDataService.recupereNom()
}])
principe.factory('ShareDataService', [function (ShareDataService){
var obj={data: "Default Name"};
recupereNom = function(){
console.log(obj)
return obj
};
envoiNom = function(entree){
obj.data=entree
};
return{
recupereNom: recupereNom,
envoiNom: envoiNom
}
}
])
</script>
</body>
</html>
```
Ce qui me bloque se situe au niveau de ce que retourne ma factory. Dans le cas présent je retourne obj ce qui est bien répercuté dans le controller 2. Par contre si je mets obj.data dans le return cela marche à l'initialisation mais cela ne fonctionne plus par la suite.
Pourquoi ? Merci par avance de votre aide.
Les events etant globaux, je deconseille cette utilisation. La factory est le plus interessant.
Salut,
Pourquoi n'utilise-tu pas $rootScope pour temporairement transvaser tes data d'un controller à l'autre ?
Je suis parti de cette article qui explique les 3 possibilités (En existe t'il plus?) pour faire ça:
http://www.aurorasolutions.io/blog/angularjs-cross-component-communication/
Il semblerait que la solution du rootscope est quelques inconvénients.
Mais de toute façons je voudrais comprendre pourquoi dans mon cas je rencontre le problème énuméré.
ou alors au travers de l'heritage de controller avec les evenements angular ( $emit, $on, $broadcast ) qui te permet de dialoguer entre les controller enfant et parents
passe par les evenements angular ( $emit, $on, $broadcast ) ça te permet de dialoguer entre les controller plus facilement