Igor Minar
6a8749e65a
refactor($resource): unify and simplify the code
2012-03-20 11:07:38 -07:00
Igor Minar
1a5bebd927
fix($http): don't send Content-Type header when no data
...
When a http request has no data (body), we should not send the
Content-Type header as it causes problems for some server-side
frameworks.
Closes #749
2012-03-20 11:07:38 -07:00
Igor Minar
83155e8fbe
style(ResourceSpec): style clean up
2012-03-20 11:07:37 -07:00
Igor Minar
6d6f875345
fix($resource): support escaping of ':' in resource url
...
So one can how define cors/jsonp resources with port number as:
resource.route('http://localhost\\:8080/Path ')
2012-03-20 11:07:37 -07:00
Igor Minar
a4fe51da3b
feat($route): when matching consider trailing slash as optional
...
This makes for a much more flexible route matching:
- route /foo matches /foo and redirects /foo/ to /foo
- route /bar/ matches /bar/ and redirects /bar to /bar/
Closes #784
2012-03-20 11:07:37 -07:00
Igor Minar
15213ec212
fix($log): avoid console.log.apply calls in IE
...
In IE window.console.log and friends are functions that don't have apply or call fns.
For this reason we have to treat them specially and do our best to log at least
something when running in this browser.
Closes #805
2012-03-20 11:07:36 -07:00
Vojta Jina
f49eaf8bf2
fix($compile): Merge interpolated css class when replacing an element
2012-03-20 10:39:43 -07:00
Vojta Jina
f701ce08f9
fix(matchers.toHaveClass): Correct reference to angular.mock.dump
2012-03-19 17:26:29 -07:00
Misko Hevery
1cc0e4173d
bug(ie7): incorrectly set all inputs to disabled
...
In ie7 all of the input fields are set to readonly and disabled, because ie7 enumerates over all attributes even if the are not declared on the element.
2012-03-19 15:49:42 -07:00
Misko Hevery
5ac14f633a
fix(json): added support for iso8061 timezone
...
Added support of timezone in dates not just zulu timezone.
This fixes issues for date filter which uses json deserialization under the hood. (for now)
Closes #/800
2012-03-19 11:41:10 -07:00
Misko Hevery
9918b748be
fix(compiler): allow transclusion of root elements
...
Fixed an issue where a directive that uses transclusion (such as ngRepeat) failed to link if it was declared on the root element of the compilation tree. (For example ngView or ngInclude including template where ngRepeat was the top most element).
2012-03-19 11:35:10 -07:00
Misko Hevery
6ecac8e71a
fix(select): multiselect failes to update view on selection insert
...
In multiselect when the underlying selection array push/pops an element the view did not re-render since the array reference stayed the same.
2012-03-19 11:35:10 -07:00
Misko Hevery
823adb2319
fix(ngForm): alias name||ngForm
...
form directive was requiring name attribute even when invoked as attribute, resulting in unnecessary duplication
2012-03-19 11:35:09 -07:00
Misko Hevery
21e74c2d2e
fix(ngView): controller not published
...
corrected omitted assignment of controller to the element data object. Without this fix the controller created by ngView is not accessible from the browser debugger.
2012-03-19 11:35:09 -07:00
Misko Hevery
6c5a05ad49
feat(jqLite): add .controller() method
...
extend JQuery with .controller() method which retrieves the closest controller for a given element
2012-03-19 11:35:09 -07:00
Vojta Jina
192ff61f5d
feat(scope.$eval): Allow passing locals to the expression
2012-03-18 23:46:30 -07:00
Igor Minar
935c1018da
fix(ngRepeat): correct variable reference in error message
...
Closese #803
2012-03-17 15:57:55 -07:00
Vojta Jina
08bfea183a
fix(forms): Set ng-valid/ng-invalid correctly
2012-03-16 12:06:29 -07:00
Igor Minar
f13dd3393d
feat(injector): infer _foo_ as foo
...
this is to enable nicer tests:
describe('fooSvc', function() {
var fooSvc;
beforeEach(inject(function(_fooSvc_) {
fooSvc = _fooSvc_;
}));
it('should do this thing', function() {
//test fooSvc
});
});
2012-03-16 10:52:40 -07:00
Igor Minar
bca96e7c7c
style(ngViewSpec): pretify some tests with $destroy events
2012-03-16 10:52:40 -07:00
Igor Minar
9b1aff905b
feat(scope): broadcast $destroy event on scope destruction
...
perf testing shows that in chrome this change adds 5-15% overhead
when destroying 10k nested scopes where each scope has a $destroy listener
2012-03-16 09:41:05 -07:00
Igor Minar
252d4548f9
style(ngSwitchSpec): fix typo
2012-03-15 15:23:49 -07:00
Igor Minar
2315d9b361
fix(ng-switch): properly destroy child scopes
2012-03-14 14:33:20 -07:00
Vojta Jina
13f31602f3
feat(ng-list): Allow custom separator
2012-03-13 17:51:05 -07:00
Misko Hevery
e9e3ee012b
feat(compile): allow ngForm on attribute and class
...
#feature
- ngForm directive can now be used with element, class, and attributes
2012-03-13 16:59:10 -07:00
Misko Hevery
de9464c143
f(compile): boolean attributes too agresive
...
- compiler would rewrite boolean attributes on all elements. This is too aggressive and interferes with some third-party frameworks
2012-03-13 16:59:03 -07:00
Misko Hevery
31cd580310
fix(ng-non-bindable): increase priority to 1000
...
- increase ng-non-bindable prioirity to 1000 so that it prevents attribute interpolation on same level.
2012-03-13 16:58:36 -07:00
Misko Hevery
d34f3bc7a6
feat(form): publish validationErrorKeys as CSS
...
- The validationErrorKeys are now published as CSS for easy styling. The errorKeys should be in
camelCase and the CSS will be in snake-case
2012-03-13 16:57:36 -07:00
Igor Minar
4806d28a29
fix(forms): remove control.$form and use nullFormCtrl
2012-03-13 16:05:52 -07:00
Igor Minar
089c0f8b0e
fix(forms): fix nesting issues and add tests
2012-03-13 16:05:52 -07:00
Igor Minar
9277d12fc0
fix(forms): lowercase all validation error keys
2012-03-13 14:13:53 -07:00
Igor Minar
ac5151a469
fix(scope): remove scope $destroy event
2012-03-13 14:13:53 -07:00
Igor Minar
f59e4b11f1
fix(forms): prefix all form and control properties with $
2012-03-12 23:04:11 -07:00
Igor Minar
5e6ba25201
fix(forms): remove the need for extra form scope
...
the forms/controls code refactored not to depend on events which forced
us to create new scope for each form element.
2012-03-12 23:04:11 -07:00
Igor Minar
9134f5ce5a
style(ng-include): remove unused args
2012-03-12 23:04:11 -07:00
Igor Minar
4e6b065a2f
test(ng-include): add ng-include=src test
2012-03-12 23:04:11 -07:00
Misko Hevery
48096048cf
fix(svg): normalize class access for SVG
2012-03-12 21:59:50 -07:00
Vojta Jina
1b9277bf6f
fix(forms): Propagate change from model even if it's undefined
2012-03-12 01:40:12 -07:00
Misko Hevery
cce31d4c93
chore(ng-include): update to work in ng-include|src mode
2012-03-11 22:36:29 -07:00
Vojta Jina
716dd5f3f9
refactor(forms): Remove touch() method
2012-03-09 17:33:22 -08:00
Vojta Jina
83314913e7
refactor(forms): Rename read() -> setViewValue()
2012-03-09 17:33:22 -08:00
Igor Minar
4a94bb9b34
fix(startTag): fix tagname extraction
...
the original code magically worked for ng:foo but for nothing else
2012-03-09 16:27:12 -08:00
Igor Minar
f4d338d393
chore(*): refactor all ng: to ng-
2012-03-09 16:14:26 -08:00
Vojta Jina
0bfaa579c0
feat($provide.service): Add $provide.service() for registering a class
2012-03-09 10:10:29 -08:00
Vojta Jina
00d4427388
refactor($provide) Rename service -> provider
...
It registers a provider class, so this makes more sense.
Breaks Rename $provide.service -> $provide.provider
2012-03-09 10:10:28 -08:00
Vojta Jina
e0c9551fd7
refactor(forms): remove registerWidget and use event instead
...
Each widget (ng-model directive) emits $newFormControl event instead of getting hold of parent form
and calling form.registerWidget(this);
2012-03-09 10:10:28 -08:00
Igor Minar
5d09a1efd3
fix(ng-view, ng-include): onload and $contentLoaded
...
- change custom onload directive to special arguments recongnized by both
ng-view and ng-include
- rename $contentLoaded event to $viewContentLoaded and $includeContentLoaded
- add event docs
2012-03-08 22:29:35 -08:00
Igor Minar
f54db2ccda
chore(directives,widgets): reorg the code under directive/ dir
2012-03-08 22:29:34 -08:00
Misko Hevery
dd7b0f56fc
fix(ng-cloak): work with class
2012-03-08 16:30:39 -08:00
Vojta Jina
b3750103cc
fix($parse): Allow property names that collide with native object properties
...
I.e. constructor, toString, or watch on FF
(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/watch )
+ optimize parser a bit to not create getter function for operators
2012-03-08 11:39:03 -08:00
Igor Minar
ee7209fe26
fix(tests): fix name collisions between various tests
2012-03-08 11:06:15 -08:00
Igor Minar
af21233820
fix(test): rename an it so that it doesn't colide with the test above
2012-03-08 11:06:14 -08:00
Igor Minar
e0ace15cd3
docs($rootScope): rename ttl to digestTtl + docs
2012-03-08 11:01:22 -08:00
Misko Hevery
6a98c52c84
chore(compiler): change default restriction to attribute only for directives
2012-03-08 10:07:49 -08:00
Vojta Jina
c2989f6cc6
fix(ng-include): Compile only content
2012-03-05 10:41:59 -08:00
Vojta Jina
4f797fe5f3
refactor(testabilityPatch): Change JSTD fail to more general throw
...
"fail" is a JSTD specific API, so it's not defined when testing without JSTD (eg SlimJim).
2012-03-05 10:41:51 -08:00
Vojta Jina
4370d756e4
refactor(directive.ngModel): rename emitValidity -> setValidity
2012-02-28 18:22:41 -08:00
Vojta Jina
4e83399570
fix(ng:model-instant): defer only keydown, throttle setTimeouts
2012-02-28 18:22:41 -08:00
Vojta Jina
e7d6106811
fix(input): Render 0 (number) as 0 (not empty string)
2012-02-28 18:22:41 -08:00
Vojta Jina
c4c60c25b4
reafactor: Rename ng:bind-immediate -> ng:model-instant
2012-02-28 18:22:41 -08:00
Vojta Jina
60743fc52a
feat(ng:include) Fire $contentLoaded event
...
+ refactor unload to listen on this event -> we can use unload with ng:view as well
Closes #743
2012-02-28 17:48:07 -08:00
Vojta Jina
9486590e1b
refactor(ng:view) Make $route scope agnostic, add $contentLoaded event
...
Problems:
- controller was instantiated immediately on $afterRouteChange (even if no content), that's
different compare to ng:controller, which instantiates controllers after compiling
- route listened on current scope ($afterRouteChange), so if you were listening on $rootScope
($afterRouteChange), you get called first and current.scope === undefined, which is flaky
- route handles scope destroying, but scope is created by ng:view
- route fires after/before route change even if there is no route (when no otherwise specified)
Solution:
- route has no idea about scope, whole scope business moved to ng:view (creating/destroying)
- scope is created (and controller instantiated) AFTER compiling the content
- that means on $afterRouteChange - there is no scope yet (current.scope === undefined)
- added $contentLoaded event fired by ng:view, after linking the content
2012-02-28 17:46:58 -08:00
Misko Hevery
e31d1c287d
refactor($route): remove .parent(); ng:view scope creation
2012-02-28 17:46:58 -08:00
Misko Hevery
f16bd2f747
refactor($route): move when/otherwise to provider
2012-02-28 17:46:58 -08:00
Vojta Jina
21c725f1a1
refactor(forms): Even better forms
...
- remove $formFactory completely
- remove parallel scope hierarchy (forms, widgets)
- use new compiler features (widgets, forms are controllers)
- any directive can add formatter/parser (validators, convertors)
Breaks no custom input types
Breaks removed integer input type
Breaks remove list input type (ng-list directive instead)
Breaks inputs bind only blur event by default (added ng:bind-change directive)
2012-02-28 17:46:58 -08:00
Vojta Jina
d656d11489
feat(directive.style): Do not compile content of style element
2012-02-28 17:41:30 -08:00
Vojta Jina
4c1c50fd9b
fix(directive.script): Do not compile content of script tags
2012-02-28 14:15:44 -08:00
Vojta Jina
5b0d068358
fix($http): Do not serialize File object
2012-02-25 18:49:54 -08:00
Vojta Jina
3171f21591
fix($httpBackend): Set current url, if not defined or empty string
...
Reason to fix this was the fact that with undefined url, it ended up with weird exception
(Cannot call method 'replace' of undefined), which was more confusing than helpful.
jQuery.ajax() does request to current url, if url is not specified, so I decided for this solution.
2012-02-23 22:50:02 -08:00
Misko Hevery
d6e3e1baab
feta(scope): watch object refference or equality
...
Breaks: Must set $watch equality to true for the old behavior
2012-02-23 15:01:08 -08:00
Misko Hevery
ffa8441886
bug(equals): incorect comparison of dates
2012-02-23 13:57:28 -08:00
Misko Hevery
80edcadb1d
feat($provide): added constant
2012-02-22 13:28:42 -08:00
Misko Hevery
fbcb7fdd14
fix($injector): circular dependency instatiation
2012-02-22 11:32:09 -08:00
Vojta Jina
6d0ca95fa0
feat($compiler): Allow attr.$observe() interpolated attrs
2012-02-21 22:46:01 -08:00
Misko Hevery
3df7b8e57f
fix(ng:repeat): use transclusion
2012-02-21 22:46:01 -08:00
Misko Hevery
7bd69d0f5b
chore(ng:switch): rewritten with transclusion API
...
BREAKING CHANGE: the change event fires on scope of switch not on scope of case.
2012-02-21 22:46:01 -08:00
Misko Hevery
78656fe0df
feat($compile) add locals, isolate scope, transclusion
2012-02-21 22:46:00 -08:00
Misko Hevery
cb10ccc44f
feat($compile): mark scope creation with ng-scope class
2012-02-21 22:46:00 -08:00
Misko Hevery
4a051efb89
feat($compile): support compiling text nodes by wrapping them in <span>
2012-02-21 22:46:00 -08:00
Misko Hevery
1752c8c44a
feat(directive): event now accessible as $event
...
Closes 259
2012-02-21 22:46:00 -08:00
Misko Hevery
761b2ed85a
feat(parse): add support for local vars in expressions
2012-02-21 22:45:59 -08:00
Misko Hevery
c8ee631c19
feat(mouseenter/mouseleave): emulating ie events
2012-02-21 22:45:59 -08:00
Misko Hevery
85b2084f57
fix(select): double array issue with multislect and jQuery
2012-02-21 22:45:59 -08:00
Vojta Jina
6e635012fb
feat(scope): scope.$emit/$broadcast return the event object, add cancelled property
2012-02-21 10:58:48 -08:00
Misko Hevery
eb92735c9e
fix(injector) .instantiate([Type]) produced wrong result
2012-02-16 14:32:52 -08:00
Vojta Jina
776739299b
fix($injector): instantiate returns instance, if non-object value returned from constructor
2012-02-08 16:12:11 -08:00
Vojta Jina
6c4f1391bc
refactor(test): remove odd inject from describe
2012-01-30 11:44:19 -08:00
Vojta Jina
58d6da556a
refactor(binder): replace jested assertions with jasmine
2012-01-29 21:59:35 -08:00
Igor Minar
39b3297fc3
fix($parse): get rid of $unboundFn
...
Closes #731
2012-01-25 16:17:43 -08:00
Misko Hevery
4804c83b7d
docs(compiler): update the compiler docs
2012-01-25 11:53:59 -08:00
Misko Hevery
e2b1d9e994
feat(scriptTemplateLoader): provide template inlining
...
populates $templateCache with content of ng-template scripts
2012-01-25 11:50:37 -08:00
Misko Hevery
9ee2cdff44
refactor(directives): connect new compiler
...
- turn everything into a directive
2012-01-25 11:50:37 -08:00
Misko Hevery
8af4fde182
add($compile): add compiler v2.0 - not connected
2012-01-25 11:46:36 -08:00
Misko Hevery
5001c1a121
refactor($interpolate): improve interpolation service add documentation
2012-01-25 11:46:36 -08:00
Misko Hevery
1e258d11d0
feat(test): support it('should', pending);
2012-01-25 11:46:35 -08:00
Igor Minar
1e96d0af8c
fix(injector): small perf improvement & code cleanup
2012-01-25 11:46:35 -08:00
Misko Hevery
97dae0d0a0
feat(jqLite): add contents()
2012-01-25 11:46:35 -08:00
Misko Hevery
84823b2eff
feature($exceptionHandler): $exceptionHandler now supports var_args
2012-01-25 11:46:34 -08:00
Misko Hevery
517811764d
cleanup(tests): remove unused variables
2012-01-25 11:46:34 -08:00
Kai Groner
56bcc04c54
feat(ng:class): support using map of classnames and conditions
...
enables <div ng:class="{'hide': !visible, 'warning': isAlert()}"...
2012-01-24 10:28:29 -08:00
Igor Minar
7da2bdb82a
fix(scope): support watching functions
...
currently we run into infinite digest if a function is being
watched as an expression. This is because we generate bound
function wrapper when the watch is processed via parser.
I'm not too keen on the solution because it relies on the unbound
fn that is being exposed for other reasons, but I can't think
of a better way to deal with this right now
2012-01-23 22:33:28 -08:00
Igor Minar
ed78f0d830
chore(log): generic test log service with custom toEquals matcher
...
- any test that needs a logger can just inject provideLog
- logger has susict api that makes tests more readable
- custom toEquals matcher allows for pretty expectations
2012-01-23 22:33:28 -08:00
Vojta Jina
dbffbefb7c
refactor($controller): Add $controller service for instantiating controllers
...
So that we can allow user to override this service and use BC hack:
https://gist.github.com/1649788
2012-01-23 13:11:12 -08:00
Vojta Jina
0196411dbe
refactor(scope.$watch): rearrange arguments passed into watcher (newValue, oldValue, scope)
...
As scopes are injected into controllers now, you have the reference anyway, so having scope as first argument makes no sense…
Breaks $watcher gets arguments in different order (newValue, oldValue, scope)
2012-01-23 11:11:27 -08:00
Vojta Jina
992c790f07
refactor(scope): separate controller from scope
...
Controller is standalone object, created using "new" operator, not messed up with scope anymore.
Instead, related scope is injected as $scope.
See design proposal: https://docs.google.com/document/pub?id=1SsgVj17ec6tnZEX3ugsvg0rVVR11wTso5Md-RdEmC0k
Closes #321
Closes #425
Breaks controller methods are not exported to scope automatically
Breaks Scope#$new() does not take controller as argument anymore
2012-01-23 11:05:36 -08:00
Igor Minar
b587091b6e
feat(jqLite): added injector() helper method
2012-01-16 02:17:27 -08:00
Vojta Jina
c49b8a2db5
fix($location): do not $digest if browser's url change fired within $apply/$digest
...
Chrome (probably other browsers as well) fires 'hashchange' event synchronously, so if you change raw location from within $apply/$digest, we don't want to $apply twice. (It would throw an exception)
2012-01-14 11:23:12 -08:00
Misko Hevery
5cdfe45aa3
feat(module): add runtime block
2012-01-13 14:28:43 -08:00
Igor Minar
16a40c626f
style(*): small fixes
2012-01-13 14:28:21 -08:00
Igor Minar
b7f4d8c3c3
fix($http): anonnymous response interceptors should be treated as factories
2012-01-13 14:28:20 -08:00
Igor Minar
46691c2721
fix($http): remove support for PATCH + better whenXXX, expectXXX api
...
- there are too many unknowns about PATCH, so I'm dropping its support until we know that this is actually useful
- expectGET, expectHEAD and expectJSON (and the same for whenXXX) should not require response data to be specified
2012-01-13 13:53:07 -08:00
Vojta Jina
15fd735793
refactor($autoScroll): rename to $anchorScroll and allow disabling auto scrolling (links)
...
Now, that we have autoscroll attribute on ng:include, there is no reason to disable the service completely, so $anchorScrollProvider.disableAutoScrolling() means it won't be scrolling when $location.hash() changes.
And then, it's not $autoScroll at all, it actually scrolls to anchor when it's called, so I renamed
it to $anchorScroll.
2012-01-13 01:07:12 -08:00
Vojta Jina
985d3d7558
refactor($autoScroll): rename method in test + use $apply instead of $digest
2012-01-13 01:05:24 -08:00
Vojta Jina
249c89c091
fix($autoScroll): scroll even if $location is in html5 mode
...
+ use autoscroll in docs (ng:include)
2012-01-13 01:01:26 -08:00
Misko Hevery
d648d709f3
refactor(module): strict separation between module-config / app-runtime
2012-01-12 13:40:07 -08:00
Vojta Jina
28114de8dc
refactor(mock.$httpBackend): split (e2e/unit testing version of $httpBackend mock)
2012-01-11 22:11:01 -08:00
Vojta Jina
c6ea1be053
fix(mock.$httpBackend): resetExpectations should not create new array
2012-01-11 11:48:03 -08:00
Misko Hevery
5143e7bf06
feat(module): new module loader
2012-01-10 22:27:00 -08:00
Igor Minar
614fd3d55a
fix(ng:repeat): support repeating over array with null
...
typeof null == 'object', but it doesn't behave like an object
because its properties can't be dereferenced, so we need
to special-case it.
Closes #702
2012-01-10 22:21:53 -08:00
Igor Minar
7146f70636
fix($httpBackend): fix for jsonp requests
2012-01-09 14:38:32 -08:00
Igor Minar
67338ce061
feat($http): turn mock backend into a decorator + e2e testing support
...
- provider -> decorator
- autoflush + passThrough mode
- fix noop -> angular.noop
2012-01-09 13:17:48 -08:00
Igor Minar
23f8da7cbb
feat($http): expose req/resp headers to transform fns
2012-01-09 13:17:48 -08:00
Igor Minar
b911e303ec
feat($httpBackend): add expect/when shortcut methods
2012-01-09 13:17:48 -08:00
Igor Minar
a13b5ed3bc
fix($http): fix and cleanup $http and friends
...
$http:
- use promises internally
- get rid of XhrFuture that was previously used internally
- get rid of $browser.defer calls for async stuff (serving from cache),
promises will take care of asynchronicity
- fix transformation bugs (when caching requested + multiple request
pending + error is returned)
- get rid of native header parsing and instead just lazily parse the
header string
$httpBackend:
- don't return raw/mock XMLHttpRequest object (we don't use it for
anything anymore)
- call the callback with response headers string
mock $httpBackend:
- unify response api for expect and when
- call the callback with response headers string
- changed the expect/when failure error message so that EXPECTED and GOT
values are aligned
Conflicts:
src/service/http.js
test/service/compilerSpec.js
test/service/httpSpec.js
2012-01-09 13:17:48 -08:00
Igor Minar
63cca9afbc
feat(browser.defer): flush should throw exception when queue is empty
2012-01-09 13:17:48 -08:00
Vojta Jina
5c19766063
feat(ng:include): enable/disable scrolling through autoscroll attribute
2012-01-07 00:18:22 -08:00
Dhruv Manek
08029c7b72
fix(angular.copy): throw Error if source and destination are identical
...
Closes #693
2012-01-06 12:19:39 -08:00
Igor Minar
0bf611087b
feat(scope): throw exception when recursive $apply
2012-01-06 12:19:39 -08:00
Igor Minar
acb4338b70
style(widgetsSpec): ws, unused variables, etc
2012-01-06 12:19:39 -08:00
Igor Minar
cd9a7b9608
fix(ng:repeat): support repeating over array with null
...
typeof null == 'object', but it doesn't behave like an object
because its properties can't be dereferenced, so we need
to special-case it.
Closes #702
2012-01-06 12:19:39 -08:00
Igor Minar
9632f5c1c7
style(q): rename src/Deferred.js to src/service/q.js
2012-01-03 17:48:09 -08:00
Vojta Jina
6f91ffeb91
style: prefer single quotes + some whitespaces
2012-01-03 15:09:00 -08:00
Vojta Jina
c594f75b4c
refactor: remove old JSTD assertions
...
So that we can run the tests even without JSTD :-D
2012-01-03 15:09:00 -08:00
bartes
0c534644bc
fix(input): bind inputs to the 'input' event
...
The input event is fired on all non-ie browsers whenever the contents of an input
field changes. This means that we now support cut&paste via mouse which
was previously unsupported.
IE8 and older don't support this events and IE9 has a problematic
support for it, so we can't rely solely on this event and drop keydown
and change events.
2011-12-07 13:07:20 -08:00
Igor Minar
c28662d28d
fix(filter): remove the $ prefix from filter service ids
2011-12-07 13:07:19 -08:00
Igor Minar
b97c6e5f74
style(scopeSpec): clean up scopeSpec.js
2011-12-07 09:41:09 -08:00
Igor Minar
4e3c05b99e
feat(injector): add $provide.decorator
2011-12-07 09:41:08 -08:00
Igor Minar
5e4d59adf0
style(injector): cleanup of InjectorSpec.js
2011-12-07 09:41:07 -08:00
Igor Minar
fd38655e6c
fix(): use angular.callbacks namespace for jsonp callbacks
...
Previously we used to put callbacks on the window object, but that
causes problems on IE8 where it is not possible to delete properties
from the window object
2011-12-07 07:54:09 -08:00
Vojta Jina
b9001e9147
fix(route): $destroy scope after update and reload
...
When we update route (changing only search param, no route reload) and then reload (change to different
route), it did not $destroy last scope.
2011-12-06 13:35:05 -08:00
Vojta Jina
c9f2b1eec5
feat(form): do not prevent submission if action attribute present
2011-12-06 13:07:26 -08:00
Igor Minar
163e05ed36
feat($http): allow interceptors to be services
2011-12-05 23:53:26 -08:00
Igor Minar
bb2e7488fa
fix($httpBackend mock): getResponseHeader should be case insensitive
2011-12-01 18:21:45 -05:00
Igor Minar
44b2f44f93
fix($resource): forwardport exposing headers from 0.9.19
2011-12-01 16:20:08 -05:00
Igor Minar
1d14760c6d
fix(ng:include): prevent race conditions by ignoring stale http callbacks
...
This fix is similar to what I've done in ng:view, if a new template has been requested before the
callback for the previous template returned, ignore it. Otherwise weird race conditions happen
and users might end up getting the content for the previous include rendered instead of the most
recent one.
2011-11-30 14:49:36 -05:00
Igor Minar
f43c226c67
fix(copy,equals): prevent browser crashes with Scope or Window
...
Scope and Window instances are special and when copied can crash browser. For this reason
it makes sense to compare them only by identity.
2011-11-30 14:49:36 -05:00
Misko Hevery
0e1fa2aefe
feat($interpolate): string interpolation function
2011-11-30 14:49:36 -05:00
Igor Minar
b00da987a9
scope($digest): add new&old val to the infinite $digest log
2011-11-30 14:49:35 -05:00
Igor Minar
188bdf7768
feat($http): add response interceptors
2011-11-30 14:49:35 -05:00
Igor Minar
dbd880cc0a
feat($http): add promise support
...
quite messy, some tests are missing, contains an experimental jasmine DI support)
2011-11-30 14:49:35 -05:00
Igor Minar
78b6e8a446
feat($parse): add support for transparent evaluation of Promises
...
Parser now builds expressions that can detect promises and transparently
evaluate them to undefined or the promise value.
If promiseA is resolved with value 'A', then {{promiseA}} evals to 'A';
If promiseA is unresolved, then {{promiseA}} evals to undefined;
Following invocations are supported:
- {{promise}}
- {{promise.futureProp}}
- {{[promise][0]}}
- {{object.promise}}
- {{object[promise]}}
- {{array[promise]}}
- {{fn(promise)}}
- combinations of the above
2011-11-30 14:49:35 -05:00
Igor Minar
1cdfa3b960
feat(deferreds/promises): Q-like deferred/promise implementation with a ton of specs
2011-11-30 14:49:03 -05:00
Vojta Jina
16363d8000
refactor(ng:view, ng:include): pass cache instance into $http
...
Instead of doing all the stuff in these widgets (checking cache, etc..) we can rely on $http now...
2011-11-30 14:49:03 -05:00
Vojta Jina
92995bbce9
fix($http): default json transformation should not crash on angular template
...
The way we determine whether it's json is lame anyway. We need to change that.
We should probably check the content type header...
2011-11-30 11:17:25 -05:00
Vojta Jina
b9707d910e
style(): get rid off some jsl warnings
2011-11-30 11:17:25 -05:00
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