| Age | Commit message (Collapse) | Author |
|
$watchCollection checks if oldValue !== newValue which does not work for NaN. This was causing
infinite digest errors, since comparing NaN to NaN in $watchCollection would always return false,
indicating that a change was occuring on each loop.
This fix adds a simple check to see if the current value and previous value are both NaN, and
if so, does not count it as a change.
Closes #4605
|
|
Originally we destroyed the oldValue by incrementaly copying over portions of the newValue
into the oldValue during dirty-checking, this resulted in oldValue to be equal to newValue
by the time we called the watchCollection listener.
The fix creates a copy of the newValue each time a change is detected and then uses that
copy *the next time* a change is detected.
To make `$watchCollection` behave the same way as `$watch`, during the first iteration
the listener is called with newValue and oldValue being identical.
Since many of the corner-cases are already covered by existing tests, I refactored the
test logging to include oldValue and made the tests more readable.
Closes #2621
Closes #5661
Closes #5688
Closes #6736
|
|
As highlighted by the new sterner dgeni.
|
|
|
|
These errors in the docs were preventing some parts of the docs from being
parsed.
|
|
|
|
|
|
|
|
Closes #6047.
|
|
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
|
|
Closes #5633
|
|
presubmits
|
|
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
|
|
Also added a note to the Writing AngularJS Documentation:
https://github.com/angular/angular.js/wiki/Writing-AngularJS-Documentation/d0c715ef89
Closes #5261
|
|
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
|
|
|
|
This change makes it easier to debug angular, especiall when dealing with heap snapshots
and hunting for memory leaks.
|
|
Added documentation for `locals` parameter of `$eval` method.
|
|
Closes #4451
|
|
|
|
This also contains some whitespace corrections by my editor.
|
|
|
|
All sibling event handlers residing on the same scope to were stopped
if one of them called stopPropagation.
Closes #4204
|
|
Closes #4234
|
|
Executes $evalAsync at the scope that the call was made
Closes: #3548
|
|
|
|
Some typos fixed and grammar improved:
- withing -> within
- life-cycle -> life cycle
- extraneous spaces
- grammar mistakes
- missing commas
- reworded unclear statements
Closes #3920
|
|
cycle is complete
|
|
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
|
|
previously it didn't work for dumping multiple objects
|
|
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).
|
|
|
|
|
|
|
|
|
|
test($compile): add test for exposing transclude and isolate scope info to batarang
|
|
|