This fixes the issue that caused two attr interpolation observers
to be registered for the same attribute as a result of isolate
scope definition with attr (@) property for this attribute.
Duplicate observers would then fight with each other updating the
model.
The issue occured only when this directive was used in a repeater
because that's when we clone the template node which caused the
two observers to point to two different sets of $attr instances.
Closes#1166, #836
IEEE 754 floating point sometimes results in values that are very small,
rather than zero. One example is 1.0 + 1.07 - 2.07, which returns
4.440892098500626e-16 instead of 0.
This change tweaks the number formatting logic so that an exponential
value with a negative exponent that is larger than the precision+1
returns 0 instead. For example: with precision 2, anything with an
exponent of -4, -5 or more would become 0. 9e-3 = 0.009 = 0.01, but 9e-4
= 0.0009 = 0.001 = 0.00. This detail is unlikely to matter since this
quirk is usually only triggered with values very close to zero.
Closes#1469
Using the client VM and forcing 32bit mode gives us huge perf boost.
before:
reali 0m8.173s
user 0m39.984s
sys 0m1.408s
after:
real 0m3.000s
user 0m12.687s
sys 0m0.852s
this speeds up the build by paralelizing closure compilation (the slowest
piece of the build process)
before:
real 0m14.372s
user 0m31.649s
sys 0m1.006s
after:
real 0m8.191s
user 0m40.473s
sys 0m1.378s
This was really corner case:
Watcher needs to return changed value, to notify that model might have changed and one more $digest cycle needs to be performed.
The watcher, that takes care of reference binding into an isolate scope ("="), did not return changed value, if the change was from the isolate scope to the parent.
If any other watcher returned change, it worked fine, as this change caused re-digest.
Closes#1272
- adds testacular config files for jqlite, jquery, modules and e2e tests
- replaces obsolete JsTD Rake tasks with Testacular onces
- rake tasks are parameterazied so that they can be used locally as well as on CI server
usage:
rake test # run all tests on Chrome
rake test[Safari+Chrome+Opera] # run all tests on Safari, Chrome and Opera
rake test[Safari] # run all tests on Safari
rake test:jqlite # run unit tests using jqlite on Chrome
rake test:jqlite[Safari,"--reporter=dots"] # run jqlite-based unit tests on Safari with dots reporter
rake autotest:jquery # start testacular with jquery-based config and watch fs for changes
rake test:e2e # run end to end tests