Bonjour à tous,
Cela fait déjà plusieurs jours que je bloque sur une manip certainement très simple : utiliser le service/factory d'un autre module que celui de mon controller.
Voici le code :
Mon fichier principal contenant le module principal (app.js)
Mon module user (user.js) qui définit le factory user.factory
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 'use strict'; /* App Module */ var app = angular.module('app', [ 'user', 'home' ]);
Et enfin mon module home qui aimerait utiliser le factory de user
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 'use strict'; /** * User module */ var userModule = angular.module('user', []) /** * User factory */ userModule.factory('user.factory', ['$http'], function ($http) { return { allowed: function(){ return false; } } });
Et voila... dans mon controller Home, j'aimerai donc utiliser mon object définit dans le user.factory, mais voila l'erreur que Angular me donne :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 'use strict'; /** * Module */ var home = angular.module('home', [ 'ngRoute', 'user' ]); /** * Config */ home.config([ '$routeProvider', function($routeProvider){ $routeProvider .when('/', { templateUrl: 'views/home.html', controller: 'Home' }) .otherwise({ redirectTo: '/' }); } ]); /** * Controllers */ home.controller('Home',['$scope', 'user.factory', function($scope, userFactory){ $scope.allowed = 'home.module'; console.log(userFactory); } ]);
Donc ma question est la suivante : est-il possible d'avoir accès à ce factory à cet endroit précis ? Si non, quel est la bonne méthode pour rendre "global" l'accès à un service/factory ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Error: [ng:areq] Argument 'fn' is not a function, got string
Merci d'avance
RESOLUTION
Erreur de noob, dans mon module user j'ai tout simplement oublié de charger le module ngRessource pour avoir le $http de disponible :/
Voici le code corrigé :
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 'use strict'; /** * User module */ var userModule = angular.module('user', ['ngResource']) /** * User factory */ userModule.factory('user.factory', ['$http'], function ($http) { return { allowed: function(){ return false; } } });
Partager