aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2013-09-30fix($compile): link parents before traversingVojta Jina
How did compiling a templateUrl (async) directive with `replace:true` work before this commit? 1/ apply all directives with higher priority than the templateUrl directive 2/ partially apply the templateUrl directive (create `beforeTemplateNodeLinkFn`) 3/ fetch the template 4/ apply second part of the templateUrl directive on the fetched template (`afterTemplateNodeLinkFn`) That is, the templateUrl directive is basically split into two parts (two `nodeLinkFn` functions), which has to be both applied. Normally we compose linking functions (`nodeLinkFn`) using continuation - calling the linking function of a parent element, passing the linking function of the child elements as an argument. The parent linking function then does: 1/ execute its pre-link functions 2/ call the child elements linking function (traverse) 3/ execute its post-link functions Now, we have two linking functions for the same DOM element level (because the templateUrl directive has been split). There has been multiple issues because of the order of these two linking functions (creating controller before setting up scope locals, running linking functions before instantiating controller, etc.). It is easy to fix one use case, but it breaks some other use case. It is hard to decide what is the "correct" order of these two linking functions as they are essentially on the same level. Running them side-by-side screws up pre/post linking functions for the high priority directives (those executed before the templateUrl directive). It runs post-linking functions before traversing: ```js beforeTemplateNodeLinkFn(null); // do not travers afterTemplateNodeLinkFn(afterTemplateChildLinkFn); ``` Composing them (in any order) screws up the order of post-linking functions. We could fix this by having post-linking functions to execute in reverse order (from the lowest priority to the highest) which might actually make a sense. **My solution is to remove this splitting.** This commit removes the `beforeTemplateNodeLinkFn`. The first run (before we have the template) only schedules fetching the template. The rest (creating scope locals, instantiating a controller, linking functions, etc) is done when processing the directive again (in the context of the already fetched template; this is the cloned `derivedSyncDirective`). We still need to pass-through the linking functions of the higher priority directives (those executed before the templateUrl directive), that's why I added `preLinkFns` and `postLinkFns` arguments to `applyDirectivesToNode`. This also changes the "$compile transclude should make the result of a transclusion available to the parent directive in post- linking phase (templateUrl)" unit test. It was testing that a parent directive can see the content of transclusion in its pre-link function. That is IMHO wrong (as the `ngTransclude` directive inserts the translusion in its linking function). This test was only passing because of c173ca412878d537b18df01f39e400ea48a4b398, which changed the behavior of the compiler to traverse before executing the parent linking function. That was wrong and also caused the #3792 issue, which this change fixes. Closes #3792 Closes #3923 Closes #3935 Closes #3927
2013-09-30docs(angular.copy): add an example with the two possible argumentsUri Goldshtein
Closes #4179
2013-09-30docs($route): reloadOnSearch affects hash fragment changesFred Sauer
reloadOnSearch also affects reloads due to $location.hash() changes
2013-09-30docs($http): update grammar in commentsMartin Cortez
Closes #4186
2013-09-30fix($location): re-assign location after BFCache backJeff Cross
In the Android browser, the BFCache maintains the state of JavaScript applications even when navigating to another app, so that going forward and back, to and from an application is very fast. Unfortunately, this can have undesired side effects. In this instance, the location variable was holding a reference to a stale window.location, and was throwing errors when going back to an Angular app after browsing to another site. This fix makes sure that location.url() includes a check to make sure that location is referencing the current window.location. Closes #4044
2013-09-30fix($animate): ensure transition-property is not changed when only keyframe ↵Matias Niemelä
animations are in use Closes #3933
2013-09-28docs(mocks): fix syntax error in exampleRob Culliton
Closes #4183
2013-09-28docs($timeout): add a $timeout exampleUri Goldshtein
The original example is by gxlcl. Closes #4180
2013-09-27fix(log): prevent logging `undefined` for $log in IEColin Casey
Closes #1705
2013-09-27docs(angular.Module): fix controller and directive method parametersDavid Bennett
2013-09-27docs(ngIf): formatting, clarityDave Peticolas
2013-09-27style($rootScope): fix argument name in $postDigest apiIgor Minar
2013-09-27docs(ngController): fix grammarDave Peticolas
2013-09-27docs(ngCsp): fix grammarDave Peticolas
2013-09-27docs(dblClick): fix grammarDave Peticolas
2013-09-27docs(ngDisabled): clarifyDave Peticolas
2013-09-27style($compile): remove unused variableIgor Minar
2013-09-27fix(jqLite): use get/setAttribute so that jqLite works on SVG nodesBrian Ford
jqLite previously used `elt.className` to add and remove classes from a DOM Node, but because the className property is not writable on SVG elements, it doesn't work with them. This patch replaces accesses to `className` with `get/setAttribute`. `classList` was also considered as a solution, but because only IE10+ supports it, we have to wait. :'( The JqLiteAddClass/JQLiteRemoveClass methods are now also used directly by $animate to work around the jQuery not being able to handle class modifications on SVG elements. Closes #3858
2013-09-26fix($compile): collect ranges on multiple directives on one elementjankuca
The problem was in keeping the values of `attrNameStart` and `attrNameEnd` between directive loop iterations which lead to the compiler looking for multi-element ranges for any directives that happened to be in the directive list after one that was applied on a range. For instance, having a ng-repeat-start and ng-class on a single element with ng-repeat being resolved first made the compiler look for an ng-repeat-end for both ng-repeat and ng-class because the `attrNameEnd` was not reset to a falsy value before the second iteration. As the result, an exception saying the block end element could not be found and the second directive was not actually applied. Closes #4002
2013-09-26feat(ngEventDirectives): add `ngCopy`, `ngCut`, and `ngPaste`Ben McCann
Closes #4172, #4170
2013-09-26fix(ngAnimate): ensure that delays are always considered before an animation ↵Matias Niemelä
closes Closes #4028
2013-09-26feat(browserTrigger): allow support for custom timeStamps in eventsMatias Niemelä
2013-09-25fix($compile): work around issue in jQuery 1.10.2Brian Ford
jQuery 1.10.2 does not attach data to comment nodes, which previously broke `$compile`. This changes how elements with "transclude element" and a controller are compiled to avoid the issue. Closes #3764
2013-09-25docs(ngHref): fix formatting and clarifyDave Peticolas
Closes #4106
2013-09-25docs(jqLite): fix typolorint
Closes #4105
2013-09-25docs($http): fix adding default header to get request exampleMr.Raindrop
Initially, `$httpProvider.defaults.headers.get` is `undefined`, so `$httpProvider.defaults.headers.get['My-Header']='value'` will throw an error. Closes #4101
2013-09-25docs(ngShowHide): improve clarityDave Peticolas
Closes #4099
2013-09-25fix(ngRepeat): correctly track elements even when the collection is ↵jankuca
initially undefined Previously if the collection model was set to undefined on the first digest, the repeater would get confused and not use the correct tracking function for associating model with dom elements in the repeater. Closes #4145 Closes #3964
2013-09-25fix(ngScenario): fix error message descriptionPete Bacon Darwin
2013-09-23refactor(angular.toJson): use charAt instead of regexpBoris Serdyuk
Provides a performance improvement when serializing to JSON strings. Closes #4093
2013-09-20fix(ng-bind-html): watch string value instead of wrapperChirayu Krishnappa
Ref: https://github.com/angular/angular.js/pull/4045 I have this sinking feeling that support this use case sort of encourages binding to function that blindly trust some html. For now, I'm fixing the issue while I think about the use cases some more. In the case of a function that performs any non-trivial work before wrapping the value (e.g. the showdown filter in issue #3980, or the binding to a simply wrapper function in issue #3932 if it did anything meaty), this fix makes it "work" - but performance is going to suck - you should bind to some other thing on scope that watches the actual source and adjusts itself when that changes (e.g. the showdown filter.) For the case of the wrapper in #3932, if one isn't performing sanitization or some such thing - then you the developer has insight into why that value is safe in that particular context - and it should be available simply by name and not as a result of a function taking any arbitrary input to make auditing of security a little saner. Closes #3932, #3980
2013-09-20chore(sce): remove unused functionChirayu Krishnappa
2013-09-20fix(ngInclude): don't break attribute bindings on ngInclude-ed elementBrian Ford
BREAKING CHANGE: ngInclude's priority is now set to 1000 It's quite rare for anyone to depend on explicity directive priority, but if a custom directive that needs to run before ngInclude exists, it should have its priority checked and adjusted if needed. Closes #3793
2013-09-20fix(ngView): IE8 regression due to expando on non-element nodesIgor Minar
This fixes the "TypeError: Object doesn't support this property or method" error on IE8, when view templates contain leading white-space. Closes #3971
2013-09-20docs(ngClass): fix grammarDave Peticolas
Closes #4061
2013-09-20docs(ngCloak): fix grammar, clarityDave Peticolas
Closes #4076
2013-09-19docs(ngModelController): clarify issue with isolated scope directivePete Bacon Darwin
See #4043
2013-09-19docs(input): fix spelling error and reword for clarityts-web
2013-09-19doc(ngApp): fix grammarDave Peticolas
2013-09-19docs($exceptionHandler): add an example of overriding the handlerJared Forsyth
Closes #3816
2013-09-19docs(ngForm): fix grammar and improve explanationDave Peticolas
Closes #4050
2013-09-18docs(ngResource): fix typoTim Statler
Closes #3835
2013-09-18docs(ngShowHide): fix typoRoberto Bonvallet
2013-09-18fix(scenario): include "not " in error messages if test is invertedHubert SABLONNIÈRE
Closes #3840
2013-09-17fix($parse): disallow access to window and dom in expressionsChirayu Krishnappa
2013-09-17docs(input): clarify that `contenteditable` is an HTML5 attributeJames
Closes #3841
2013-09-16docs(orderBy): fix typo in orderBy.js documentationJesse Palmer
Closes #3838
2013-09-16doc(api): fix grammar in a directive descriptionDave Peticolas
- Add missing words. - Simplify text.
2013-09-16docs(api): fix grammar in ngClick descriptionDave Peticolas
- Add missing word 'directive'. - Add missing word 'an'.
2013-09-14docs(guide): fix typo in animation docPatrick Drechsler