Bonjour,
Je suis avec la base de données en ligne Firebase (Qui est géniale).
Hier j'ai passé plus de 4 heures à me casser la tête sur un problème insoluble.
je jette une bouteille à la mer, car je ne pense pas qu'on me répondra, mais qui sait.
Voilà, Mon but est d'enregistrer plusieurs appréciations par utilisateurs dans un tableau d'objets JSON.
Voici le format de mon modèle de données :
Comme vous pouvez le constater, le tableau "appreciations" est un sous élèment du modèle de données utilisateurs.json.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $scope.ajouterUtilisateur = function() { $rootScope.utilisateurs.$add({ nom: $scope.nouveauNom, prenom: $scope.nouveauPrenom, age: $scope.nouvelAge, email: $scope.nouvelEmail, appreciations:[ {"texte":$scope.nouvelleAppreciation}] }); };
Lorsque utilisateurs.json est modifié par l'application ANGULAR en Local, les modifications sont automatiquement répercutées dans ma base de données FIREBASE en ligne, c'est la liaison tridirectionelle, qui permet d'élaborer des applications partagées sans Back End (3 ways Binding), tout en angularJs+AngularFire.
Et lorsque dans mon application ANGULARJS, j'essaye d'ajouter une nouvelle appréciation avec son texte à la base de données FIREBASE, j'ai écrit ça :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <ul> <li ng-repeat="appreciation in utilisateur.appreciations"> <form ng-submit="utilisateurs.$add(appreciation)"> <input ng-model="appreciation" /> <button type="submit">Ajouter Message</button> </form> Appreciation : {{appreciation.texte}} </li> </ul>
Mais cela ne mets pas la base de données à jour en temps réel.
$add est une fonction de ANGULARFIRE qui permet la liaison tridirectionnelle automatisée des données.
Elle marche très bien avec un modèle de données Simple, mais dans mon cas ce n'est pas simple puisque j'ai des sous-élèments dans mon modèle qui doivent s'ajouter dynamiquement(Les appreciations).
J'ai réussi à updater le tableau d'objets JSON utilisateurs.json en local, mais pas moyen que la base de données firebase se mette à jour, uniquement avec ce cas spécifique de "sous-modèle".
Pourtant, le reste du code marche bien et mets bien la base de données FIrebase à jour, mais cela ne fait pas réfèrence à un sous élèment de mon modèle utilisateurs.json:
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <input ng-model="utilisateur.$id" /> <input ng-model="utilisateur.nom" ng-change="utilisateurs.$save(utilisateur)" /> <input ng-model="utilisateur.prenom" ng-change="utilisateurs.$save(utilisateur)" /> <input ng-model="utilisateur.age" ng-change="utilisateurs.$save(utilisateur)" /> <input ng-model="utilisateur.email" ng-change="utilisateurs.$save(utilisateur)" /> <button class="myButton" ng-click="utilisateurs.$remove(utilisateur)">Supprimer L'utilisateur</button>
La seule piste que j'ai est de créer une fonction en Js avec ces méthodes, mais c'est difficile :https://www.firebase.com/docs/web/gu...ving-data.html
Qui sait, quelqu'un aurait peut être un exemple de 3 ways binding avec un sous élèment de modèle, utilisant FIREBASE+ANGULARJS ?
Partager