Utiliser le service d'un autre module
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:
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:
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:
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:
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:
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;
}
}
}); |