| Age | Commit message (Collapse) | Author |
|
when decrementing ttl
An infinite $digest loop can be caused by expressions that invoke a promise.
The problem is that $digest does not decrement ttl unless it finds dirty changes;
it should check also if asyncQueue is empty.
Generally the condition for decrementing ttl should be the same as the
condition for terminating the $digest loop.
Fixes #2622
|
|
loop
Closes #5525
|
|
|
|
for the event
Update $on and $destroy to maintain a count of event keys registered for each scope and its children.
$broadcast will not descend past a node that has a count of 0/undefined for the $broadcasted event key.
Closes #5341
Closes #5371
|
|
Stop dirty-checking during $digest after the last dirty watcher has been re-checked.
This prevents unneeded re-checking of the remaining watchers (They were already
checked in the previous iteration), bringing a substantial performance improvement
to the average case run time of $digest.
Closes #5272
Closes #5287
|
|
Fixes #5169
|
|
Add calls to clearPhase() when an exception is raised by a watcher
while a digest cycle, in order to not be stuck on `$digest` scope phase
|
|
All sibling event handlers residing on the same scope to were stopped
if one of them called stopPropagation.
Closes #4204
|
|
Executes $evalAsync at the scope that the call was made
Closes: #3548
|
|
|
|
cycle is complete
|
|
Making assertions on state (rather than interactions) is better anyway.
|
|
This change causes a new $digest to be scheduled in the next tick if
a task was was sent to the $evalAsync queue from outside of a $digest
or an $apply.
While this mode of operation is not common for most of the user code,
this change means that $q promises that utilze $evalAsync queue to
guarantee asynchronicity of promise apis will now also resolve outside
of a $digest, which turned out to be a big pain point for some developers.
The implementation ensures that we don't do more work than needed and
that we coalese as much work as possible into a single $digest.
The use of $browser instead of setTimeout ensures that we can mock out
and control the scheduling of "auto-flush", which should in theory
allow all of the existing code and tests to work without negative
side-effects.
Closes #3539
Closes #2438
|
|
Closes #3566
|
|
Previously any $evalAsync task scheduled from a isolate scope or a child of an isolate scope
would never execute because we never flushed this queue
|
|
Closes #2915
|
|
|
|
- add toThrowNg matcher
|
|
|
|
files inside docs comment code
|
|
The new method allows to shallow watch collections (Arrays/Maps).
|
|
|
|
|
|
Due to bd524fc4 calling $destroy() on a scope mupltiple times cases NPE.
Closes #1627
|
|
|
|
Having one async queue per scope complicates the matters when users wish to do
partial scope updates, since many services put events on the rootScope. By
having single queue the programing model is simplified.
|
|
|
|
When $digest() throws infinite digest exception it
does not properly clear the $phase leaving the scope
in an inconsistent state.
Closes #979
|
|
|
|
Breaks event.cancel() is event.stopPropagation()
|
|
|