AngularJS circular dependency -
i'm making logger service, extend angular's $log service, saving errors (or debug if enabled) indexeddb database. here's code:
angular.module('applogger', ['appdatabase']) .service('logservices', function($log, database) { // ... this.log = function(type, message, details) { var log = {}; log.type = type log.context = this.context; log.message = message; log.datetime = moment().format('yyyy-mm-dd hh:mm:ss'); log.details = details || ''; $log[type.tolowercase()](log); if (type === 'error' || this.logdebug) { database.logsave(log); } }; // ... })
this working in services intended. problem can't use logger inside database service, because throws circular dependency error. understand problem have no clue how should resolve it... how should around ?
thanks helping :-)
the reason angular complaining circular dependency that...well there one.
dangerous path go down, if know doing (famous last words) there solution circumvent that:
.service('logservices', function($log, $injector) { // ... var database; // initialize later this.log = function(type, message, details) { /* before using database first time * need inject */ if (!database) { database = $injector.get('database'); } var log = {}; log.type = type log.context = this.context; log.message = message; log.datetime = moment().format('yyyy-mm-dd hh:mm:ss'); log.details = details || ''; $log[type.tolowercase()](log); if (type === 'error' || this.logdebug) { database.logsave(log); } }; // ... })
see, also, short demo.
Comments
Post a Comment