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