Bonjour, toujours dans la continuité de la formation de Angular, je me retrouver bloqué sur les services.
J'ai un fichier json qui ressemble à ceci :
{
"nid": "24",
"vid": "24",
"type": "page",
"language": "fr",
"title": "Presse",
"uid": "1",
"status": "1",
"created": "1390404181",
"changed": "1390404181",
"comment": "0",
"promote": "0",
"sticky": "0",
"tnid": "0",
"translate": "0",
"uri": ""
},
{
"nid": "23",
"vid": "23",
"type": "page",
"language": "fr",
"title": "O\u00f9 acheter nos produits ?",
"uid": "1",
"status": "1",
"created": "1390305089",
"changed": "1394450294",
"comment": "0",
"promote": "0",
"sticky": "0",
"tnid": "0",
"translate": "0",
"uri": ""
},
{
"nid": "22",
"vid": "22",
"type": "page",
"language": "fr",
"title": "Agr\u00e9ment",
"uid": "1",
"status": "1",
"created": "1386698804",
"changed": "1386698804",
"comment": "0",
"promote": "0",
"sticky": "0",
"tnid": "0",
"translate": "0",
"uri": ""
}
]
Pour commencé j'ai récupérais les titres pour en faire un menu qui pointe vers
<a href="#about/{{content.nid}}">{{content.title}}</a>
jusqu'ici aucun soucis.
Mon problème surgit lorsque je veut afficher les contenues de l'article par rapport a son 'nid'. En suivant la formation mon code ressemble a ceci:
<!-- Script JS -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.14/angular-sanitize.js"></script>
<script src="http://code.angularjs.org/1.2.14/angular-route.js"></script>
<script>
// mon module app contient les module de Route et de Sanitize
var app = angular.module('app', 'ngSanitize', 'ngRoute'])
// systeme de routing
app.config(function($routeProvider){
$routeProvider
.when('/home', {templateUrl: 'partials/home.html', controller: 'contentsCtrl'})
.when('/test/:nid', {templateUrl: 'partials/test.html', controller: 'contentsCtrl'})
.otherwise({redirectTo : '/'});
})
app.factory('ContentFactory', function(){
var factory = {
contents : ...], // mon code json que vous pouvez voir plus haut
getContents : function(){
return factory.contents;
},
getContent : function(nid){
var content = {};
angular.forEach(factory.contents, function(value, key){
if(value.nid == nid){
content = value
}
});
return content;
},
}
return factory;
})
app.controller('contentsCtrl', function ($scope, ContentFactory, $routeParams){
var content = ContentFactory.getContents($routeParams.nid);
var id = $routeParams.nid;
$scope.contents = ContentFactory.getContents();
$scope.title = content.title; // récupération du titre de l'article par rapport a l'id ('nid')
});
</script>
Voici a quoi ressemble mon fichier test.html :
<div class="large-8 columns" id="main-content">
<!-- Recuperation de mes contenue de page -->
<h1>{{title}}</h1>
</div>
bien sur je fait bien appel a mon controller, module et les directives (ng-view , ng-app="app" etc..)
je n'obtiens pas d'erreur dans ma console, mais lorsque je log par exemple :
content.title j'obtiens undefined
$routeParams j'obtiens bien le 'nid'
$routeParams.nid je récupère bien le 'nid' aussi
du coup pourquoi il me récupère pas le titre de l'article dont le nid = 4 par exemple ou autres.
Merci d'avance
Résolue faut d'orthographe je faisait pas appel a ma fonction ContentFactory.getContent($routeParams.nid); j'avais fait appel a ContentFactory.getContents($routeParams.nid);
;)