That's very hard to solve...
Maybe an approach that starts like this:
angular.module('toastr', [])
.config(function($provide) {
$provide.decorator("$exceptionHandler", function($delegate, toastr)
{
return function(exception, cause) {
toastr.error(exception.message, 'ERROR!');
};
});
})
.directive('toasts', function($compile, toastr) {
return {link:function(scope, element, attrs) {
scope.$watch(toastr.lastToast, function(a,b,s) {
if(a === null) return;
element.append($compile('<pre>' + a + '</pre>')(scope))
//replace this...
})
}};
})
.factory('toastr', function() {
var toastrs = [];
var index = -1;
return {
lastToast: function() {
if(index === -1) return null;
return toastrs[index].message;
},
error: function(message, title) {
var newToastr = {
index: index++,
message: message,
title: title
};
toastrs.push(newToastr);
}
};
})
http://plnkr.co/edit/KK1dT3xKDkdqjvTmiaeq?p=preview
On Wednesday, February 12, 2014 6:57:06 PM UTC-5, Jesus Rodriguez wrote:
>
> I am fighting a fight I cannot understand properly so I come here to get
> some knowledge.
>
> I am porting a jQuery directive to angular. It is to popup alerts. I
> decided to go to the ui-bootstrap $modal route, AKA a directive and a
> factory that will create new directives to append them to the body. So far
> so good, it works perfect for me.
>
> Even when it is really WIP I decided to swap the jQuery version for my
> version and I got a:
>
> Uncaught Error: [$injector:cdep] Circular dependency found: $interpolate
> <- $compile <- toastr <- $exceptionHandler <- $rootScope <- $route
>
> For what I understand, $exceptionHandler is really picky about what you
> inject and normally it suggest you to manual inject with $injector.
>
> My provider is something like:
>
> $get: ['$compile', '$document', '$rootScope', function($compile, $document,
> $rootScope) {
>
>
> Both $compile and $rootScope are the problematic here.
>
>
> My question are:
>
>
> Why is $exceptionHandler so picky? I tried to reproduce my problem creating a
> controller using $rootScope and injecting also my provider and it works good.
> It only seems to fail with $exceptionHandler.
>
>
> Should I change my $get? Since it compiles new alerts, I need $compile and
> also $rootScope (to give them a scope)
>
>
> I tried manually getting my library on the exceptionHandler and nothing, it
> still fail and since it is a alert messages, it is normally used as logger
> and logging and $exceptionHandler are friends.
>
>
> Ideas? Thoughts?
>
>
--
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/groups/opt_out.