Hello everyone:
I think I know where is the error but I do not know why this happening. The
fact is that the code where I have declared the module and the code where I
have the provider are in differents files.
First, I have the file thinStart.js:
thinModule = angular.module('thinModule',['thinConfiguration']);
thinModule.value("thinProfile","THDEV");
And after I have the file logger.js:
if (thinModule){
thinModule.provider('thinLogger',function thinLoggerProvider () {
function createLogger (name, level) {
var logger = new Log4js.getLogger(name);
logger.setLevel(level);
return logger;
}
function getAjaxAppender (url, threshold){
var ajaxAppender = new AjaxAppender(url);
ajaxAppender.setThreshold(threshold);
ajaxAppender.setLayout(Log4js.JSONLayout());
return ajaxAppender;
}
function getConsoleAppender (inline){
var consoleAppender = new ConsoleAppender(inline);
return consoleAppender;
}
this.$get = ['profile','$injector',function createLogger
(profile,$injector){
var loggers=null;
if (profile.indexOf("TH") == 0){
var properties = $injector.get(profile).logger;
for (var i=0; i < properties.length; i++){
if (!loggers[properties[i].name]){
loggers[properties[i].name] = createLogger(properties[i].name,
properties[i].loggerLevel);
if (properties[i].AjaxAppender){
loggers[properties[i].name].addAppender(getAjaxAppender(properties[i].AjaxAppender.URL,
properties[i].AjaxAppender.thresHold));
} else if (properties[i].ConsoleAppender){
loggers[properties[i].name].addAppender(getConsoleAppender(properties[i].ConsoleAppender.inline));
} else {
delete loggers[properties[i].name];
throw "There is not appender defined for this logger";
}
} else {
throw "There are two or more loggers with the same name";
}
}
} else {
throw "Invalid profile. You have tried to start the architecture's core
with an invalid configuration";
}
return loggers;
}];
});
} else {
throw ("Error: Main module could not be found");
}
The thing is that If I put the logger.js code inside the thinStart.js file,
the error disappears.
Does anyone knows why? and is there any way to add components in the
thinModule separating the code into differents files?
Thank you.
El miércoles, 17 de septiembre de 2014 18:49:24 UTC+2, Adrian Ferreres
escribió:
>
> Hello:
>
> I'm trying to code a custom provider in angular but, when it is injected
> in a controller, I get this error:
>
> Error: [$injector:unpr]
> http://errors.angularjs.org/1.3.0-rc.2/$injector/unpr?p0=profileProvider%20%3C-%20profile%20%3C-%20thinLogger
>
> I know that this error means that angular can not find the provider
> thinLogger in the module but, the funny thing is that, when I do a debug of
> my code I see the provider inside of the module
>
>
> <https://lh3.googleusercontent.com/-077Gwbst460/VBm5jAphjcI/AAAAAAAABe8/VT2v9ioEO2Q/s1600/Error%2Bprovider.png>
> This is the code of my provider:
>
> thinModule = angular.module('thinModule',['thinConfiguration']);
>
> thinModule.value("thinProfile","THDEV");
>
> if (thinModule){
> thinModule.provider('thinLogger',function thinLoggerProvider () {
> function createLogger (name, level) {
> var logger = new Log4js.getLogger(name);
> logger.setLevel(level);
> return logger;
> }
> function getAjaxAppender (url, threshold){
> var ajaxAppender = new AjaxAppender(url);
> ajaxAppender.setThreshold(threshold);
> ajaxAppender.setLayout(Log4js.JSONLayout());
> return ajaxAppender;
> }
> function getConsoleAppender (inline){
> var consoleAppender = new ConsoleAppender(inline);
> return consoleAppender;
> }
> this.$get = ['profile','$injector',function createLogger
> (profile,$injector){
> var loggers=null;
> if (profile.indexOf("TH") == 0){
> var properties = $injector.get(profile).logger;
> for (var i=0; i < properties.length; i++){
> if (!loggers[properties[i].name]){
> loggers[properties[i].name] = createLogger(properties[i].name,
> properties[i].loggerLevel);
> if (properties[i].AjaxAppender){
> loggers[properties[i].name].addAppender(getAjaxAppender(properties[i].AjaxAppender.URL,
>
> properties[i].AjaxAppender.thresHold));
> } else if (properties[i].ConsoleAppender){
>
> loggers[properties[i].name].addAppender(getConsoleAppender(properties[i].ConsoleAppender.inline));
> } else {
> delete loggers[properties[i].name];
> throw "There is not appender defined for this logger";
> }
> } else {
> throw "There are two or more loggers with the same name";
> }
> }
> } else {
> throw "Invalid profile. You have tried to start the architecture's core
> with an invalid configuration";
> }
> return loggers;
> }];
> });
> } else {
> throw ("Error: Main module could not be found");
> }
>
> This is the code of the controller:
> var opListControllers = angular.module('opListControllers',
> ['thinModule']);
>
> opListControllers.controller('OpsListCtrl', ['$scope',
> '$http','OportunidadSrv','thinLogger',
> function ($scope, $http,OportunidadSrv,thinLogger) {
> var loggers = thinLogger();
> if (!loggers.thinLogger1){
> console.log("Error: No existe el thinLogger1");
> } else {
> console.log("El thinLogger1 existe");
> loggers.thinLogger1.trace("NNN Prueba 1 de log");
> loggers.thinLogger1.debug("NNN Prueba 2 de log");
> }
> if (!loggers.thinLogger2){
> console.log("Error: No existen el thinLogger2");
> } else {
> console.log("El thinLogger2 existe");
> loggers.thinLogger2.debug("NNN Prueba de log 3");
> loggers.thinLogger2.error("NNN Prueba de log 4");
> }
> if(!loggers.thinLogger3){
> conosole.log("Por ahora, el thinLogger3 no tiene que existir");
> } else {
> console.log("Error: El thinLogger3 existe cuando no deberia");
> }
> OportunidadSrv.getAll().then(function(data) {
> $scope.oportunidades = data.data.response;
> });
> $scope.range = function(opsFiltradas) {
>
> $scope.opsFiltradas = opsFiltradas;
>
> var botones = [];
> var nbotones = Math.ceil(( opsFiltradas - $scope.opsToView) /
> $scope.opsToView) + 1;
>
> for (var i = 0; i <= nbotones; i++) {
> botones.push(i);
> }
>
> return botones;
> };
>
> $scope.newField = {};
> $scope.editing = false;
>
> $scope.getPage = function(a) {
> $scope.pagina = a;
> };
> $scope.setInitPage = function() {
> $scope.pagina = 0;
> };
> $scope.classOpPag = function(i) {
> var clase;
> clase = "vis_" + ( i < ($scope.opsToView + ($scope.opsToView *
> $scope.pagina)) && (i >= ($scope.opsToView * $scope.pagina)));
> return clase;
> };
> $scope.pagina = 0;
> $scope.editAppKey = function(field) {
> $scope.editing = $scope.oportunidades.indexOf(field);
> $scope.newField = angular.copy(field);
> };
>
> $scope.saveField = function(field) {
> $scope.update(field);
> };
>
> $scope.cancel = function(index) {
> if ($scope.editing !== false) {
> $scope.oportunidades[$scope.editing] = $scope.newField;
> $scope.editing = false;
> }
> };
> $scope.update = function(field) {
> OportunidadSrv.save(field);
> };
>
> }]);
>
> opListControllers.controller('OpsDetailCtrl', ['$scope',
> '$routeParams','$http','OportunidadSrv',
> function($scope, $routeParams,$http,OportunidadSrv) {
> OportunidadSrv.getOp($routeParams.opId).then(function(data) {
> $scope.op = data.data.response;
> $scope.op.fechaModificacion=new Date($scope.op.fechaModificacion);
> $scope.op.fechaInicio=new Date($scope.op.fechaInicio);
> $scope.op.mesReferencia=new Date($scope.op.mesReferencia);
> });
>
> }]);
>
>
>
>
> Could any of you help me with this problem?
> thank you in advance for your time.
>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.