Bonsoir,
Je suis la formation sur AngularJS, qui est très complète et bien expliquée. Voilà mon problème, en essayant d'aller plus loin avec mon fichier Json suite aux cours sur les services et les promesses, je tente d'ajouter une fonction GetList() à la factory, mais je n'arrive pas à lister tous les articles de tous les auteurs, puis obtenir l'id du livre pour y afficher les informations détaillées, en y affichant le nom de l'auteur ($scope parent??), le résumé du livre, etc... Pourriez-vous m'éclaire sur la manière de procéder ? Merci !
Factory:
getList : function(){
var deferred = $q.defer();
if(factory.api !== false){
deferred.resolve(factory.api);
}else{
$http.get('API/api.json')
.success(function(data, status){
factory.api = data;
deferred.resolve(factory.api);
}).error(function(data, status){
deferred.reject('Error');
});
}
return deferred.promise;
}
Controller:
.controller('listCtrl', function($scope, apiFactory){
$scope.list = apiFactory.getList().then(function(api){
$scope.list = api"livres"];
console.log($scope.list);
})
})
Exemple JSON:
{
"auteurs":
{
"id": 0,
"nom": "Howe",
"bio": "Ex proident id ipsum consequat tempor ex aute velit aliqua irure esse culpa dolore. Consequat do culpa culpa non id incididunt elit magna sint nulla laboris fugiat. Consectetur consequat aliqua enim adipisicing sint ullamco nostrud qui enim enim minim in. Aliquip mollit non sint culpa incididunt duis aute mollit aute duis. Est irure qui pariatur sunt deserunt labore consectetur aliqua duis sunt. Aliquip non est id in veniam reprehenderit nostrud deserunt. Nostrud et in esse aliqua laboris laboris eu nisi commodo adipisicing deserunt dolor labore dolore.\r\n",
"pic": "http://lorempixel.com/80/80/people/",
"livres":
{
"id": 0,
"resume": "Qui sit Lorem anim enim ex incididunt non ex nisi dolor non aute. Lorem id tempor amet amet labore Lorem fugiat fugiat eu dolore. Pariatur esse eiusmod laboris commodo est laboris reprehenderit ea excepteur in id tempor est irure. Deserunt tempor sint laboris et qui irure excepteur quis est Lorem.\r\n",
"titre": "Mangelica",
"commentaires":
{
"pseudo": "Georges",
"comment": "Cillum anim commodo et aliqua dolor eu nisi culpa cupidatat. Officia cillum esse cupidatat exercitation. Pariatur mollit amet cillum et do officia ut commodo amet excepteur cupidatat laboris. Id non minim eu consequat sunt. Id mollit nisi occaecat consectetur in proident ipsum. Occaecat commodo amet est quis eiusmod occaecat ex laboris. In nisi et anim reprehenderit pariatur mollit id veniam consequat qui consequat.\r\n",
"city": "Groton",
"email": "jillhowe@mangelica.com"
}
]
}
]
}
]
}
Bon, j'ai "contourné" le problème en utilisant un nested ng-repeat mais je doute que cela soit la meilleure solution. En attendant mieux...
livres-index.html
<div ng-repeat="auteur in auteurs">
<h2>{{ auteur.nom }}</h2>
<ul>
<li ng-repeat="livre in auteur.livres | orderBy:'+nom'">
<a href="#/informations/{{livre.id}}"><h1>{{livre.titre}}</h1> <p>{{livre.resume}}</p></a>
</li>
</ul>
</div>
controller auteursCtrl
.controller('auteursCtrl', function($scope, apiFactory){
$scope.loading = true;
$scope.auteurs = apiFactory.getAuteurs().then(function(api){
$scope.auteurs = api;
console.log($scope.auteurs);
$scope.loading = false;
}, function(msg){
alert(msg);
});
})
Bonjour, comment tu as fait pour rendre une structure de JSON comme cela ??
{
"auteurs":
{
"id": 0,
"nom": "Howe",
"bio": "Ex proident id ipsum consequat tempor ex aute velit aliqua irure esse culpa dolore. Consequat do culpa culpa non id incididunt elit magna sint nulla laboris fugiat. Consectetur consequat aliqua enim adipisicing sint ullamco nostrud qui enim enim minim in. Aliquip mollit non sint culpa incididunt duis aute mollit aute duis. Est irure qui pariatur sunt deserunt labore consectetur aliqua duis sunt. Aliquip non est id in veniam reprehenderit nostrud deserunt. Nostrud et in esse aliqua laboris laboris eu nisi commodo adipisicing deserunt dolor labore dolore.\r\n",
"pic": "http://lorempixel.com/80/80/people/",
"livres":
{
"id": 0,
"resume": "Qui sit Lorem anim enim ex incididunt non ex nisi dolor non aute. Lorem id tempor amet amet labore Lorem fugiat fugiat eu dolore. Pariatur esse eiusmod laboris commodo est laboris reprehenderit ea excepteur in id tempor est irure. Deserunt tempor sint laboris et qui irure excepteur quis est Lorem.\r\n",
"titre": "Mangelica",
"commentaires":
{
"pseudo": "Georges",
"comment": "Cillum anim commodo et aliqua dolor eu nisi culpa cupidatat. Officia cillum esse cupidatat exercitation. Pariatur mollit amet cillum et do officia ut commodo amet excepteur cupidatat laboris. Id non minim eu consequat sunt. Id mollit nisi occaecat consectetur in proident ipsum. Occaecat commodo amet est quis eiusmod occaecat ex laboris. In nisi et anim reprehenderit pariatur mollit id veniam consequat qui consequat.\r\n",
"city": "Groton",
"email": "jillhowe@mangelica.com"
}
]
}
]
}
]
}
Salut, j'ai simplement utilisé un générateur de JSON en attendant d'utiliser ma propre API.