Vojta Jina
5bbd64ac65
feat($http): allow passing custom cache instance per request
...
You can still use cache: true, which will use $http's default cache.
2011-11-30 11:17:25 -05:00
Vojta Jina
caeb1bf899
feat($httpBackend): fix 0 status code when "file" protocol
...
Browsers return always 0 status code for "file" protocol, so we convert them into 200/404.
2011-11-30 11:17:24 -05:00
Vojta Jina
9b4efa73f9
feat(mock.$httpBackend): say which request was expected when unexpected request error
2011-11-30 11:17:24 -05:00
Vojta Jina
4aaa2f7f6b
feat(mock.$httpBackend): verify expectations after flush()
2011-11-30 11:17:24 -05:00
Vojta Jina
6290bd4587
refactor(mock.$httpBackend): rename when().then() to when().respond()
2011-11-30 11:17:24 -05:00
Vojta Jina
e9f81b6631
fix(mock.$httpBackend): flush() even requests sent during callbacks
2011-11-30 11:17:23 -05:00
Vojta Jina
afbe073121
feat(mock.$httpBackend): add verifyNoOutstandingRequest method
...
+ rename verifyExpectations to verifyNoOutstandingExpectation
2011-11-30 11:17:23 -05:00
Vojta Jina
7b705df2b7
feat($http): broadcast $http.request event
2011-11-30 11:17:23 -05:00
Vojta Jina
a4c8ac7126
feat(mock.$httpBackend): throw when nothing to flush, dump data/headers when expected different
2011-11-30 11:17:23 -05:00
Vojta Jina
972c3e9be0
refactor($http): change callback matching mechanism
2011-11-30 11:17:22 -05:00
Vojta Jina
feacf608ee
fix($resource): to work with $http, $httpBackend services
...
Breaks Disabling $resource caching for the moment.
2011-11-30 11:17:22 -05:00
Vojta Jina
fe633dd0cf
fix($http): allow multiple json vulnerability prefixes
...
We strip out both:
)]}',
)]}'
2011-11-30 11:17:22 -05:00
Vojta Jina
fdcc2dbfd3
feat($http): expose pendingRequests and configuration object
...
- $http.pendingRequests is now an array of pending requests
- each request (its future object) has public property configuration
2011-11-30 11:17:22 -05:00
Vojta Jina
5ad0c7d0e4
feat($httpBackend): extract $browser.xhr into separate service
...
- remove whole $browser.xhr stuff
- remove whole mock $browser.xhr stuff
- add $httpBackend service + migrate unit tests from $browser
- add temporary API to access $browser's outstandingRequests count
2011-11-30 11:17:22 -05:00
Vojta Jina
540701a8d8
feat(mocks.$browser): add simple addJs() method into $browser mock
2011-11-30 11:17:22 -05:00
Vojta Jina
cd28a2e952
feat(mocks.$httpBackend): add $httpBackend mock
...
$httpBackend mock allows:
- expecting (asserting) requests
- stubbing (responding without asserting)
Add empty $httpBackend service (currently just wrapper for $browser.xhr)
2011-11-30 11:12:14 -05:00
Vojta Jina
59adadca08
feat($http): new $http service, removing $xhr.*
...
Features:
- aborting requests
- more flexible callbacks (per status code)
- custom request headers (per request)
- access to response headers
- custom transform functions (both request, response)
- caching
- shortcut methods (get, head, post, put, delete, patch, jsonp)
- exposing pendingCount()
- setting timeout
Breaks Renaming $xhr to $http
Breaks Takes one parameter now - configuration object
Breaks $xhr.cache removed - use configuration cache: true instead
Breaks $xhr.error, $xhr.bulk removed
Breaks Callback functions get parameters: response, status, headers
Closes #38
Closes #80
Closes #180
Closes #299
Closes #342
Closes #395
Closes #413
Closes #414
Closes #507
2011-11-30 11:12:14 -05:00
Igor Minar
497839f583
feat($cacheFactory): add general purpose $cacheFactory service
2011-11-30 11:03:42 -05:00
Vojta Jina
5487bdb3d1
feat($browser.xhr): add timeout option to abort request
...
Timeouted request responds internal status code -1, which should be normalized
into 0 by $xhr.
2011-11-30 11:03:42 -05:00
Vojta Jina
3ae3ccf3da
fix($browser.xhr): fix IE6, IE7 bug - sync xhr when serving from cache
...
IE6, IE7 is sync when serving content from cache.
We want consistent api, so we have to use setTimeout to make it async.
2011-11-30 11:03:42 -05:00
Vojta Jina
e9b57f9df8
fix($browser.xhr): respond with internal -2 status on jsonp error
...
If jsonp is not successfull, we return internal status -2.
This internal status should by normalized by $xhr into 0,
but $xhr needs to distinguish between jsonp-error/abort/timeout (all status 0).
2011-11-30 11:03:42 -05:00
Vojta Jina
45f47ff6cd
fix($browser.xhr): change method "JSON" to "JSONP"
...
Breaks "JSON" xhr method is now called "JSONP"
2011-11-30 11:03:41 -05:00
Vojta Jina
0c8b35681e
feat($browser): xhr returns raw request object
2011-11-30 11:03:41 -05:00
Vojta Jina
3548fe3139
feat(service.$autoScroll): scroll to hash fragment
...
- whenever hash part of the url changes
- after ng:view / ng:include load
2011-11-21 17:49:49 -08:00
Codier
29f9e2665d
fix(scope): $watch (and angular.equals) should support NaN values
...
- since NaN !== NaN in javascript digest can get into an infinite loop
when model value is set to NaN
- angular.equals(NaN, NaN) should return true since that's what we
expect when comparing primitives or objects containing NaN values
Previously NaN because of its special === properties was used as the
initial value for watches, but that results in issues when NaN is used
as model value.
In order to allow for model to be anything incuding undefined and NaN we
need to mark the initial value differently in a way that would avoid
these issues, allow us to run digest without major perf penalties and
allow for clients to determine if the listener is being called because
the watcher is being initialized or because the model changed. This
implementation covers all of these scenarios.
BREAKING CHANGE: previously to detect if the listener was called because
the watcher was being initialized, it was suggested that clients check
if old value is NaN. With this change, the check should be if the newVal
equals the oldVal.
Closes #657
2011-11-21 15:43:12 -08:00
TEHEK Firefox
3e1a6688c3
chore(browser): rename Browser.js -> browser.js, BrowserSpec.js -> browserSpec.js
...
And move them to proper service subfolder...
2011-11-18 12:05:55 -08:00
Misko Hevery
aba9bb2a24
fix(input): treat all not number model as blank
2011-11-15 11:47:23 -08:00
Misko Hevery
5857c44e0c
fix(radio): fix binding to value={{exp}}
2011-11-15 11:44:36 -08:00
Misko Hevery
8adae2fdf2
refactor(injector): removed loadModule/ng:module
...
- added module property to doc:example
2011-11-14 20:31:21 -08:00
Misko Hevery
e88dfb734a
refactor(injector): $injector is no longer a function.
...
- $injector('abc') -> $injector.get('abc');
- $injector(fn) -> $injector.invoke(null, fn);
2011-11-14 20:31:19 -08:00
Misko Hevery
8d6dc0b9a7
del($eager): removed the support for $eager services
2011-11-14 20:31:19 -08:00
Vojta Jina
acbd7cdf32
style(docs): make jslint happy - fix some warnings
2011-11-14 20:31:19 -08:00
Misko Hevery
186a840cd3
feat(bootstrap): added angular.bootstrap method
2011-11-14 20:31:18 -08:00
Misko Hevery
b09595a3c1
fix(doc) cleanup all api doc link warnings
2011-11-14 20:31:18 -08:00
Vojta Jina
5279de0e70
fix($location): links without path segment should not change the path
...
Closes #648
2011-11-14 20:31:17 -08:00
Misko Hevery
74fac45f48
doc($filter): added $filter documentation
2011-11-14 20:31:16 -08:00
Misko Hevery
f0fa5e6376
doc(AUTO, NG_MOCK): Documenting the AUTO and NG_MOCK module
2011-11-14 20:31:16 -08:00
Misko Hevery
c283bf6035
refactor($location): merged $locationConfig service into $locationProvider
2011-11-14 20:31:15 -08:00
Misko Hevery
9c06394376
chore(scenario tests): make scenario tests pass again
2011-11-14 20:31:15 -08:00
Misko Hevery
085e3c611f
new(directive): added ng:module directive for loading modules
2011-11-14 20:31:15 -08:00
Misko Hevery
78c7066422
refactor(angular): isDate / isArray test iframe independent fix
2011-11-14 20:31:14 -08:00
Misko Hevery
a87f2fb9e4
refactor(mock): moved mocks into its own module
2011-11-14 20:31:14 -08:00
Misko Hevery
c27aba4354
refactor(api): remove type augmentation
...
BREAK:
- remove angular.[Object/Array/String/Function]
- in templates [].$filter(predicate) and friends need to change to [] | filter:predicate
2011-11-14 20:31:14 -08:00
Misko Hevery
dd9151e522
refacter(filters): convert filter/limitTo/orderBy from type augmentation to filters
2011-11-14 20:31:13 -08:00
Misko Hevery
3972d2a89b
refactor(json): break dependence on api.js
2011-11-14 20:31:13 -08:00
Misko Hevery
cb6f832f38
refactor(filter): filters are now injectable and services
...
BREAK:
- removed CSS support from filters
2011-11-14 20:31:09 -08:00
Misko Hevery
6022f3df39
move(filters): appease the History God
2011-11-14 16:39:34 -08:00
Misko Hevery
7c11531902
refactor(parser): turn parser into a service (keep compatibility hack)
2011-11-14 16:39:33 -08:00
Misko Hevery
bee6060e4b
move(parser): appease the History God
2011-11-14 16:39:33 -08:00
Misko Hevery
16597e8b52
refactor($service): removed almost all references to scope.$service
...
- still need to remove from factory
2011-11-14 16:39:33 -08:00
Misko Hevery
bd04316a89
refactor(services): migrate angular.service -> module
2011-11-14 16:39:33 -08:00
Misko Hevery
ed36b9da3b
refactor(injector): switch to injector 2.0 introduce modules
2011-11-14 16:39:32 -08:00
Misko Hevery
c925f8a657
new(injector): new injector v2.0
...
- not connected to keep the CL small
2011-11-14 16:39:32 -08:00
Misko Hevery
4c10d33eb4
refactor(api): cleaned up the externalization of angular API methods
2011-11-14 16:39:32 -08:00
Misko Hevery
9062996a0e
feat(injector): support $inject(fn($service){}) function invocation
2011-11-14 16:39:32 -08:00
Misko Hevery
411c1ae77e
feat(injector): support ['$service', function($service){}] annotations for function invocation.
2011-11-14 16:39:32 -08:00
Misko Hevery
d12df0d360
refactor(compiler) turn compiler into a service
...
BREAK
- remove angular.compile() since the compile method is now a service and needs to be injected
2011-11-14 16:39:32 -08:00
Misko Hevery
d9b58f23f6
move(compiler): appease the History God
...
- renamed: src/Compiler.js -> src/service/compiler.js
- renamed: test/CompilerSpec.js -> test/service/compilerSpec.js
2011-11-14 16:39:32 -08:00
Misko Hevery
03dd8c4f4c
feat(injector): Service look up failures include dependency path
2011-11-14 16:39:32 -08:00
Misko Hevery
48697a2b86
refactor(injector): turn scope into a service
...
- turn scope into a $rootScope service.
- injector is now a starting point for creating angular application.
- added inject() method which wraps jasmine its/beforeEach/afterEach,
and which allows configuration and injection of services.
- refactor tests to use inject() where possible
BREAK:
- removed angular.scope() method
2011-11-14 16:39:31 -08:00
Misko Hevery
93b777c916
move(scope): appease the History God
...
- renamed: src/Scope.js -> src/service/scope.js
- renamed: test/ScopeSpec.js -> test/service/scopeSpec.js
2011-11-14 16:39:31 -08:00
Misko Hevery
e4303a1f3a
chore(test): remove stale bit-rotten code
...
- deleted: test/manual.html
2011-11-09 08:54:04 -08:00
Igor Minar
1e00db8daa
fix(directives): make directive names case-insensitive
...
+ tests
+ added docs for angular.directive
2011-11-08 21:44:46 -08:00
Dhruv Manek
e2663f62b0
feat(ng:style): compatibility + perf improvements
...
- better compatibility with 3rd party code - we clober 3rd party
style only if it direcrtly collides with 3rd party styles
- better perf since it doesn't execute stuff on every digest
- lots of tests
2011-11-08 02:25:22 -08:00
Vojta Jina
2636105c5e
feat(matchers): extract jasmine matchers into separate file for future reuse
...
Prefix all used functions with angular.* so that they can be used with compiled angular as well...
2011-10-31 18:22:21 -07:00
Igor Minar
c0b557a96c
test(scope): infinite digest test should pass on all browsers
...
Different browsers print function body differently, and best of all IE doesn't have
function.name property.
2011-10-31 12:46:12 -07:00
Igor Minar
ef875ad0cf
feat(scope): better logging of infinite digest error
...
Feedback team has often problems debugging inifinite digest errors, this change
should reveal info about what watchers are causing the infinite loop
2011-10-31 11:34:25 -07:00
Igor Minar
615841a5d3
style(widgets): fix typo in a spec comment
2011-10-31 07:19:33 -07:00
Vojta Jina
dc8ffa51b7
fix(scenario.dsl): Fix dsl for $location
...
New $location does not have hashSearch, hashPath.
The old dsl was mixing $location / window.location so this solves the problem as well...
2011-10-26 15:58:59 -07:00
Igor Minar
d7ba5bc83b
feat(bootstrap): drop angular.js file name restrictions for autobind
...
The last script element in the dom is always us if the script that
contains angular is loaded synchronously.
For async loading manual bootstrap needs to be performed.
Close #621
2011-10-26 12:57:15 -07:00
Igor Minar
3945f884c5
fix(ng:repeat) with array ignore properties not representing array elements
...
Along the way I also changed the repeater impl to use for loop instead
of for in loop.
Iteration over objects is handled by creating an array of keys, which is
sorted and this array then determines the order of iteration over an
element. This makes repeating over objects deterministic and
cross-browser compatible.
2011-10-26 12:54:00 -07:00
Igor Minar
d5ccabce60
fix(ng:view): ignore stale xhr callbacks
...
A lot of badness happens when we don't ignore stale xhrs. These
raceconditions are only apparent when user clicks through the app very
quckly without waiting for routes to fully load.
Closes #619
2011-10-26 12:15:07 -07:00
Igor Minar
bb948176aa
test(ng:view): spec cleanup
...
- remove optional controller definition from specs
- remove extranious digest calls
2011-10-26 12:02:30 -07:00
Igor Minar
bacc31bea9
fix(defer.cancel): should return false instead of undefined
2011-10-22 21:32:48 -07:00
Igor Minar
ad90c3574f
feat($defer): add $defer.cancel
...
This functionality was previously available only as obscure $browser.defer.cancel.
I also added docs and tests and fixed an issue in .defer.cancel mock.
2011-10-22 21:32:48 -07:00
Vojta Jina
9b85757102
fix($location): rewrite links with nested elements
...
For example:
<a href="some/link">inner <span>text</span></a>
If you click on "text", then the span element is event.target, so we need to traverse the DOM.
2011-10-22 15:35:18 -07:00
Igor Minar
c6c3949b14
feat(filter.date): use mediumDate as default
...
Breaking change!
Previously the default was fullDate.
2011-10-20 16:51:28 -07:00
Igor Minar
e175db37c6
fix(date filter): default to fullDate format
...
The browser's behave inconsistently, so we should just stick to one format
when the format is not specified by the developer
Closes #605
2011-10-20 16:51:28 -07:00
Igor Minar
f38010d3a2
fix(compiler): revert 8611ebe6 - calling \$digest after linking
...
Change introduced by me in 8611ebe6 results in considerable inefficiencies when the compiler
and linker is used from within a widget, in which case, we call $digest unnecessary since it
will be called by the $apply which called the directive/widget in the first place.
There are only two places when the extra $digest call can be useful - when manually bootstrapping
the app or in tests. However even in tests this behavior can result in unwanted results (especially
when ng:controller is involved). So it is better to leave it for the developer to call $digest
when it is really needed.
2011-10-20 15:51:14 -07:00
Misko Hevery
7fc18b263d
fix(radio): allows data-binding on value property. Closes#316
2011-10-20 11:30:40 -07:00
TEHEK Firefox
3692885810
fix(ng:options): compile null/blank option tag
...
Fixes #562
2011-10-19 22:52:14 -07:00
Igor Minar
5d43439dbe
fix(ng:pattern): correctly parse out inlined regexp
2011-10-19 21:52:20 -07:00
Konstantin Stepanov
78f394fd17
feat(input): add ng:minlength and ng:maxlength validation
...
notes(igor): I also e2e tests and refactorred the e2e test example to be
more clear about what is a variable and what is an html/framework api.
2011-10-19 16:49:20 -07:00
Konstantin Stepanov
e82e64d57b
fix(input): recognize 'password' as an html input type
2011-10-19 10:36:36 -07:00
Igor Minar
833eb3c844
fix(ng:repeat): repeater should ignore $ and $$ properties
2011-10-18 17:27:43 -07:00
TEHEK Firefox
ee6af9a978
fix(ng:options): select correct element when '?'-option was previously selected
...
Closes #599
2011-10-18 14:02:54 -07:00
Igor Minar
d83a92c121
fix(checkbox): prefix true-value & false-value with ng:
2011-10-13 17:35:00 -07:00
Vojta Jina
afc81b554e
fix($location): do not rewrite link when meta key pressed
2011-10-13 11:10:19 -07:00
Misko Hevery
4af4378b11
fix(forms): broken tests on jQuery and ie8&9
2011-10-12 23:04:48 -07:00
Igor Minar
8611ebe6a0
fix(compiler): linking function should call $digest
...
The linked scope should be $digest-ed but only if a $digest isn't
already running on it.
2011-10-12 23:04:48 -07:00
Igor Minar
8f46a3c9ac
fix(jqLite): attr for boolean attribute should lowercase value
2011-10-12 23:04:47 -07:00
Igor Minar
de4e06ed73
test(checkbox): add test for ng:change
2011-10-12 11:11:10 -07:00
Misko Hevery
fd822bdaf9
chore(formating): clean code to be function() {
2011-10-11 11:01:46 -07:00
Misko Hevery
4f78fd692c
feat(forms): new and improved forms
2011-10-11 11:01:45 -07:00
Misko Hevery
e86c435349
refactor(bindings): remove the decoration of the DOM with errors.
...
Only $exceptionHandler gets notified now.
2011-10-11 10:53:07 -07:00
Misko Hevery
1942861472
refactor(hover): delete hover service
2011-10-11 10:53:06 -07:00
Misko Hevery
b96e978178
fix(jqlite): removeClass would clobber class names
2011-10-11 10:53:06 -07:00
Misko Hevery
bda2bba2be
feat(jqlite): added .inheritedData method and $destroy event.
...
- refactored .scope() to use .inheritedData() instead.
- .bind('$destroy', callback) will call when the DOM element is removed
2011-10-11 10:53:05 -07:00
Misko Hevery
25a62b58db
refactor(injection) infer injection args in ng:controller only
...
Because only controllers don't have currying, we can infer its arguments, all other APIs needing currying, automatic inference complicates the matters unecessary.
2011-10-11 10:53:04 -07:00
Misko Hevery
75f11f1fc4
feat(ng:repeat) collection items and DOM elements affinity / stability
2011-10-11 10:53:04 -07:00