bonjour,
étant débutant sur angular, je peine à vouloir afficher des données d'une base de données mongoDb en REST, dans des pages web.
côté back, j'ai utilisé node.js (pas de souçis).
un message d'erreur s'affiche : TypeError: Cannot read property '0' of undefined
pourtant, j'ai suivi la procédure en me renseignant sur des sites.
j'ai essayé de plusieurs manières.
si quelqu'un veut bien m'aider à résoudre ce problème ? merci bien.
voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 /*MongoDb => http://localhost:3000/skills (l'url fonctionne bien)*/ { "skills": [ { "_id": "5196666ae4b0988ed5cc4391", "title": "Compétences techniques", "items": [ { "subtitle": "Langages", "item": "JAVASCRIPT, AJAX, JSON, HTML5, CSS3, XML, PHP, SQL, SHELL", "display": "1" }, { "subtitle": "Javascript client-side", "item": "JQUERY, BACKBONE (notions), EMBERJS (notions)", "display": "1" } ... ] } ] }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 /*app.js*/ 'use strict'; angular.module( 'myApp', [ 'ngRoute', 'myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers' ]) .config(['$routeProvider', function( $routeProvider) { $routeProvider.when( '/home', {templateUrl: 'app/partials/home.html', controller: 'HomeController'}); $routeProvider.when( '/skills', {templateUrl: 'app/partials/skills.html', controller: 'SkillController'}); $routeProvider.otherwise({ redirectTo: '/home' }); }]);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /*service.js*/ 'use strict'; angular.module( 'myApp.services', ['ngResource']) .factory( 'SkillsService', [ '$resource', function( $resource) { return $resource( '/skills', {}, { query : { method:'GET', isArray : true }, get : { method:'GET' } }); }]);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /*controller.js*/ angular.module( 'myApp.controllers', []) .controller( 'HomeController', [function() { }]) .controller( 'SkillsController', [ '$scope', 'SkillsService', function( $scope, SkillsService) { var skillsBase = SkillsService.query().skills[0]; $scope.skills = skillsBase.items; }]);
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <!--index.html--> <!doctype html> <html lang="fr" xmlns:ng="http://angularjs.org" ng-app="myApp" id="ng-app"> ... <body> <div class="container" ng-view></div> ... <script src="app/lib/jquery/jquery-2.0.3.min.js"></script> <script src="app/lib/bootstrap/bootstrap.min.js"></script> <script src="app/lib/angular/angular.js"></script> <script src="app/lib/angular/angular-route.js"></script> <script src="app/lib/angular/angular-resource.js"></script> <script src="app/js/app.js"></script> <script src="app/js/services.js"></script> <script src="app/js/controllers.js"></script> <script src="app/js/filters.js"></script> <script src="app/js/directives.js"></script> ... </body> </html>
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <!--home.html--> <div ng-controller="SkillsController"> <div ng-repeat="skill in skills">{{skill.item}}</div> </div> <div ng-include data-src="'app/partials/skills.html'"></div> <!--si je supprime ng-controller="SkillsController", il n'y a plus de messages d'erreurs mais aucune donnée ne s'affiche.-->
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <!--skills.html--> <div> <div ng-repeat="skill in skills">{{skill.item}}</div> </div>
Partager