AngularJS scope

Par nicolas, il y a 11 ans


Bonjour,

Nouveau sur le framework AngularJS je suis confronte au probleme suivant : J'ai plusieurs pero qui possedent plusieurs des armes (il peut y en avoir une infinie !)

J'aimerais affichier les armes de chaque perso

Exemple

Perso1:<br/>
----Arme1<br/>
----Arme2<br/>
Perso2:<br/>
----Arme1<br/>
Perso3:<br/>
----Arme1<br/>
----Arme2<br/>
----Arme3<br/>

Pouvant avoir une infinite de perso et d'armes, pour évite le lag, j'aimerais charger les armes d'un perso juste quand l'utilisateur click sur un perso.

J'ai alors fait ceci :

Index.html :

<div ng-repeat="result in results"> <div ng-click="getArme(result)">Perso : {{result}}</div> <div ng-repeat="result2 in results2"> <div>Arme = {{result2}} </div> </div> </div>

app.js :

var app = angular.module('myApp', []); app.controller('MainController', ['$scope', '$http', function($scope, $http) { $scope.getArme = function (perso) { /*** Fonction qui fait une requette ajax grace a http() et qui mes tous les armes dans $scope.resultat2 getNamePerso('affArme.php', perso); /***************************************/ }; $scope.getPerso = function () { /*** Fonction qui fait une requette ajax grace a http() et qui mes tous les non des perso dans $scope.resultat getNamePerso('affPerso.php'); /***************************************/ }; } ]);

Le probleme est que lorsqu'on click sur un perso cela va mettre les armes ce perso dans chaque perso !
Je pense que cela est du au fait que pour afficher les armes j'utilise la meme resultats2[] pour tous les persos.

J'ai peut etre une piste de reflexion : j'ai lu quelque part qu'il y avait possibilite de creer plusieur scope. On pourrait donc creer un scope pour chaque perso donc un tableau resultat2[] pour chaque perso. Le probleme c'est que je ne vois pas comment faire et je ne sais pas si c'est un solution optimiser :s

Merci

3 réponses

Maenhyr, il y a 11 ans

je vois que tu passes le parametre 'perso' dans la methode getArme. c'est dans cet élément que tu dois ajouter les nouvelles armes. pas dans $scope.resultat2.

nicolas, il y a 11 ans

C'est a dire ? As tu un exemple ?
En effet perso et une chaine de caractère, et donc comme je peux y ajouter un tableau ?

Maenhyr, il y a 11 ans
$scope.getArme = function (perso) { // comme je ne sais pas ce que fait getNamePerso('affArme.php', perso); // je propose un autre exemple, a toi d'adapter // fonction qui envoie une requete au serveur // et qui renvoie une arme perso.arme = getArme(); };