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)
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'
]);
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
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 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
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);
    }
]);
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
Error: [ng:areq] Argument 'fn' is not a function, got string
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 ?

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;
        }
    }
});