Comments (6)
what about a permanently displayed toast for validation errors?
me thinks...
from angular-toastr.
Nah, the idea is to match the original toastr
. Anyway, you can put the timeOut
to 0 so it will be permanently
from angular-toastr.
Me again... didn't know the timeout to 0... thanks...
in the Hottowel template, Papa has a factory Logger that encapsulates the jquery dependent Toaster. Nevertheless, when I try to inject your excellent version, it throws a circular depencency. I'm new to Angular, and don't know how to manage your directive to be encapsulated to the Logger or something equivalent... any ideas on the matter?
Thanks in andvace.
Miguel Delgado
from angular-toastr.
Yes I do.
This is not a problem with my library, it is just a couple of services in angular that are problematic in this manner.
The problem is because the exceptionHandler
(I guess you are talking about it, I also played with Hottowel) is one of those problematic services.
If you have a library x
that injects a service
which needs the exception handler
(a core service) and then the exception handler
requires that x
service. That would cause a circular dependency error
. That is a very common issue with the exception handler
(and a few more services).
The problem also resides when Angular
tries to resolve every dependency in "compile" time. That will throw the error.
The solution is to load in runtime a dependency when needed, that way it wouldn't throw any error.
Check this:
(function() {
'use strict';
angular.module('app').factory('$exceptionHandler', exceptionHandler);
exceptionHandler.$inject = ['$injector'];
function exceptionHandler($injector) {
return function(exception, cause) {
var logger = $injector.get('logger');
var config = $injector.get('config');
var appErrorPrefix = config.appErrorPrefix;
var logError = logger.getLogFn('app', 'error');
var errorData = { exception: exception, cause: cause };
var msg = appErrorPrefix + exception.message;
logError(msg, errorData, true);
};
}
}());
That is how you would resolve the issue following Papa's code conventions. Check how I load logger
manually INSIDE the return function (loading it by hand when the service is injected wouldn't resolve the issue).
I don't recall if the config
service needs to be injected that way too, I was playing with that and I don't have time at the moment to try that.
The logger
will inject toastr
normally then.
So the rule here is when you have a circular dependency problem
, check that there is no something obviously broken and if not, inject by hand the problematic dependency (no need to load everything by hand, just the problematic one) when you need it.
from angular-toastr.
Wow! thanks a lot, this seems to be a really good tip. I will check against my code (already a variant from Hottowel) and let you know...
Thanks
from angular-toastr.
@Foxandxss thank you for circular dependency solution, i`ve just implemented it to my project, but when error is handled, i get - "logger.getLogFn is not a function". Do you have any idea how to solve it?
Thanks in advance!
from angular-toastr.
Related Issues (20)
- angular-toastr.tpls.js contains the entire source code HOT 1
- Stacking toasts using custom template
- how to add fadeOut and fadeIn HOT 1
- progressBar option disappearing and starting all over again HOT 2
- Using extraData for ng-click with custom template
- toastr.clear() and toastr.active() don't work! HOT 1
- trustAsHtml used for title and message -XSS Attack
- Repo Name Change HOT 1
- Explicit 3rd parameter doesn't override default behavior which declared in toasrConfig file HOT 2
- styling missmatch when using containerId option
- Parameters for duration configuration HOT 1
- unable to use ng-click HOT 1
- Setting extendedTimeOut to zero, toastr still dismisses after hover HOT 2
- Change width of toast in a controller
- allowHtml prone to XSS-Vulnerabilities HOT 5
- Messages are not styled HOT 1
- x
- I need help with toast-bottom-full-width.
- Second argument is necessary in order for options to be read
- Failed to load template toast.html
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from angular-toastr.