Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

ng-click causes digest already in progress when triggering with jquery #14673

Closed
markgardner opened this issue May 25, 2016 · 0 comments
Closed

Comments

@markgardner
Copy link
Contributor

Note: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.

Do you want to request a feature or report a bug?
Bug.

What is the current behavior?
When triggering an event using jquery within a ng-click handler trigger, it can cause a digest already in progress error.

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).
This plnkr should illustrate a possible problem. However, I'm sure this happens often when integrating 3rd-party libaries into angular.
http://plnkr.co/edit/VAXafyll7hTXR5BR5FrR

What is the expected behavior?
Ideally, the common ng event directives would be able to call their handlers whether there is an active digest cycle or not.

What is the motivation / use case for changing the behavior?
I'm experiencing this problem in my work's app with a few components as we are growing our event handlers.

Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
This appears to not be specific to any particular browser / OS.

Other information (e.g. stacktraces, related issues, suggestions how to fix)
I have a potential PR that I can submit with this issue.

@gkalpak gkalpak added this to the Backlog milestone May 25, 2016
Narretz pushed a commit to Narretz/angular.js that referenced this issue Jul 13, 2018
…on't $apply if already in $digest

Digest cycle already in progress error can inadvertently be caused when triggering an
element's click event while within an active digest cycle. This is due to the ngEventsDirs
event handler always calling $rootScope.$apply regardless of the status of $rootScope.$$phase.
Checking the phase and calling the function immediately if within an active digest cycle
will prevent the problem without reducing current functionality.

Closes angular#14673

Closes angular#14674
Narretz pushed a commit to Narretz/angular.js that referenced this issue Jul 23, 2018
…on't $apply if already in $digest

Digest cycle already in progress error can inadvertently be caused when triggering an
element's click event while within an active digest cycle. This is due to the ngEventsDirs
event handler always calling $rootScope.$apply regardless of the status of $rootScope.$$phase.
Checking the phase and calling the function immediately if within an active digest cycle
will prevent the problem without reducing current functionality.

Closes angular#14673
Closes angular#14674
Narretz pushed a commit to Narretz/angular.js that referenced this issue Jul 23, 2018
…n $digest

Digest cycle already in progress error can inadvertently be caused when triggering an
element's click event while within an active digest cycle. This is due to the ngEventsDirs
event handler always calling $rootScope.$apply regardless of the status of $rootScope.$$phase.
Checking the phase and calling the function immediately if within an active digest cycle
will prevent the problem without reducing current functionality.

Closes angular#14673
Closes angular#14674
Narretz pushed a commit to Narretz/angular.js that referenced this issue Jul 23, 2018
…n $digest

Digest cycle already in progress error can inadvertently be caused when triggering an
element's click event while within an active digest cycle. This is due to the ngEventsDirs
event handler always calling $rootScope.$apply regardless of the status of $rootScope.$$phase.
Checking the phase and calling the function immediately if within an active digest cycle
will prevent the problem without reducing current functionality.

Closes angular#14673
Closes angular#14674
Narretz pushed a commit that referenced this issue Jul 25, 2018
…n $digest

Digest cycle already in progress error can inadvertently be caused when triggering an
element's click event while within an active digest cycle. This is due to the ngEventsDirs
event handler always calling $rootScope.$apply regardless of the status of $rootScope.$$phase.
Checking the phase and calling the function immediately if within an active digest cycle
will prevent the problem without reducing current functionality.

Closes #14673
Closes #14674
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants