chore($location) switch to use $rootElement

This commit is contained in:
Misko Hevery 2012-05-18 15:26:09 -07:00
parent 85632cb44c
commit 8aa18f0ad0
3 changed files with 19 additions and 15 deletions

View file

@ -405,7 +405,7 @@ function locationGetterSetter(property, preprocess) {
*
* @requires $browser
* @requires $sniffer
* @requires $document
* @requires $rootElement
*
* @description
* The $location service parses the URL in the browser address bar (based on the {@link https://developer.mozilla.org/en/window.location window.location}) and makes the URL available to your application. Changes to the URL in the address bar are reflected into $location service and changes to $location are reflected into the browser address bar.
@ -468,8 +468,8 @@ function $LocationProvider(){
}
};
this.$get = ['$rootScope', '$browser', '$sniffer', '$document',
function( $rootScope, $browser, $sniffer, $document) {
this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement',
function( $rootScope, $browser, $sniffer, $rootElement) {
var currentUrl,
basePath = $browser.baseHref() || '/',
pathPrefix = pathPrefixFromBase(basePath),
@ -487,7 +487,7 @@ function $LocationProvider(){
var u = currentUrl,
absUrlPrefix = composeProtocolHostPort(u.protocol(), u.host(), u.port()) + pathPrefix;
$document.bind('click', function(event) {
$rootElement.bind('click', function(event) {
// TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
// currently we open nice url link and redirect then

View file

@ -11,3 +11,6 @@
* location where the applications {@link angular.module.AUTO.$injector $injector} service gets
* published, it can be retrieved using `$rootElement.injector()`.
*/
// the implementation is in angular.bootstrap

View file

@ -498,8 +498,8 @@ describe('$location', function() {
// html5 history enabled, but not supported by browser
describe('history on old browser', function() {
afterEach(inject(function($document){
dealoc($document);
afterEach(inject(function($rootElement){
dealoc($rootElement);
}));
it('should use hashbang url with hash prefix', function() {
@ -532,8 +532,8 @@ describe('$location', function() {
// html5 history enabled and supported by browser
describe('history on new browser', function() {
afterEach(inject(function($document){
dealoc($document);
afterEach(inject(function($rootElement){
dealoc($rootElement);
}));
it('should use new url', function() {
@ -681,7 +681,6 @@ describe('$location', function() {
function configureService(linkHref, html5Mode, supportHist, attrs, content) {
module(function($provide, $locationProvider) {
var jqRoot = jqLite('<div></div>');
attrs = attrs ? ' ' + attrs + ' ' : '';
// fake the base behavior
@ -692,14 +691,16 @@ describe('$location', function() {
}
link = jqLite('<a href="' + linkHref + '"' + attrs + '>' + content + '</a>')[0];
root = jqRoot.append(link)[0];
jqLite(document.body).append(jqRoot);
$provide.value('$document', jqRoot);
$provide.value('$sniffer', {history: supportHist});
$locationProvider.html5Mode(html5Mode);
$locationProvider.hashPrefix('!');
return function($rootElement, $document) {
$rootElement.append(link);
root = $rootElement[0];
// we need to do this otherwise we can't simulate events
$document.find('body').append($rootElement);
};
});
}
@ -711,11 +712,11 @@ describe('$location', function() {
}
function initLocation() {
return function($browser, $location, $document) {
return function($browser, $location, $rootElement) {
originalBrowser = $browser.url();
// we have to prevent the default operation, as we need to test absolute links (http://...)
// and navigating to these links would kill jstd
$document.bind('click', function(e) {
$rootElement.bind('click', function(e) {
lastEventPreventDefault = e.isDefaultPrevented();
e.preventDefault();
});