aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVojta Jina2012-01-12 02:29:26 -0800
committerVojta Jina2012-01-13 01:01:26 -0800
commit249c89c0911254873c68cd753d903ea5606344ac (patch)
treeee89b4d54ce20eabcaad625debbc0b282afdee74
parent5164ae545b10723b4e9ec454f436f6698dc93e24 (diff)
downloadangular.js-249c89c0911254873c68cd753d903ea5606344ac.tar.bz2
fix($autoScroll): scroll even if $location is in html5 mode
+ use autoscroll in docs (ng:include)
-rw-r--r--docs/src/templates/index.html6
-rw-r--r--src/service/autoScroll.js15
-rw-r--r--test/service/autoScrollSpec.js4
3 files changed, 10 insertions, 15 deletions
diff --git a/docs/src/templates/index.html b/docs/src/templates/index.html
index 9054f095..6d93a2ad 100644
--- a/docs/src/templates/index.html
+++ b/docs/src/templates/index.html
@@ -117,10 +117,8 @@
<div class="content-panel">
<h2 ng:bind="partialTitle | title"></h2>
- <ng:include id="content"
- class="content-panel-content"
- src="getCurrentPartial()"
- onload="afterPartialLoaded()"></ng:include>
+ <ng:include id="content" class="content-panel-content" autoscroll
+ src="getCurrentPartial()" onload="afterPartialLoaded()"></ng:include>
</div>
<div id="disqus" class="content-panel">
diff --git a/src/service/autoScroll.js b/src/service/autoScroll.js
index 7b5b28e4..223400f4 100644
--- a/src/service/autoScroll.js
+++ b/src/service/autoScroll.js
@@ -10,9 +10,7 @@
* according to rules specified in
* {@link http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document Html5 spec}.
*
- * If `$location` uses `hashbang` url (running in `hashbang` mode or `html5` mode on browser without
- * history API support), `$autoScroll` watches the `$location.hash()` and scroll whenever it
- * changes.
+ * It also watches the `$location.hash()` and scroll whenever it changes to match any anchor.
*
* You can disable `$autoScroll` service by calling `disable()` on `$autoScrollProvider`.
* Note: disabling is only possible before the service is instantiated !
@@ -54,12 +52,11 @@ function $AutoScrollProvider() {
else if (hash === 'top') $window.scrollTo(0, 0);
}
- // scroll whenever hash changes (with hashbang url, regular urls are handled by browser)
- if ($location instanceof LocationHashbangUrl) {
- $rootScope.$watch(function() {return $location.hash();}, function() {
- $rootScope.$evalAsync(scroll);
- });
- }
+ // does not scroll when user clicks on anchor link that is currently on
+ // (no url change, no $locaiton.hash() change), browser native does scroll
+ $rootScope.$watch(function() {return $location.hash();}, function() {
+ $rootScope.$evalAsync(scroll);
+ });
return scroll;
}];
diff --git a/test/service/autoScrollSpec.js b/test/service/autoScrollSpec.js
index 86a47f50..4f4dd0e2 100644
--- a/test/service/autoScrollSpec.js
+++ b/test/service/autoScrollSpec.js
@@ -169,12 +169,12 @@ describe('$autoScroll', function() {
});
- it('should not scroll when html5 mode with history api', function() {
+ it('should scroll when html5 mode with history api', function() {
module(initLocation({html5Mode: true, historyApi: true}));
inject(
addElements('id=some'),
changeHashAndDigest('some'),
- expectNoScrolling()
+ expectScrollingTo('id=some')
);
});