@@ -265,6 +265,40 @@ LocationUrl.prototype = {
265
265
return this ;
266
266
} ,
267
267
268
+ /*
269
+ * @ngdoc method
270
+ * @name ng.$location#pushState
271
+ * @methodOf ng.$location
272
+ *
273
+ * @description
274
+ * @param {object= } state object for pushState
275
+ * @param {string= } title for pushState
276
+ * @param {string= } url New url without base prefix (e.g. `/path?a=b#hash`)
277
+ * @return {object } $location
278
+ */
279
+ pushState : function ( state , title , url , replace ) {
280
+ this . $$state = state ;
281
+ this . $$title = title ;
282
+ this . url ( url , replace )
283
+ return this ;
284
+ } ,
285
+
286
+ /*
287
+ * @ngdoc method
288
+ * @name ng.$location#replaceState
289
+ * @methodOf ng.$location
290
+ *
291
+ * @description
292
+ * @param {object= } state object for replaceState
293
+ * @param {string= } title for pushState
294
+ * @param {string= } url New url without base prefix (e.g. `/path?a=b#hash`)
295
+ * @return {object } $location
296
+ */
297
+ replaceState : function ( state , title , url ) {
298
+ this . pushState ( state , title , url , true )
299
+ return this ;
300
+ } ,
301
+
268
302
/**
269
303
* @ngdoc method
270
304
* @name ng.$location#protocol
@@ -574,13 +608,13 @@ function $LocationProvider(){
574
608
}
575
609
576
610
// update $location when $browser url changes
577
- $browser . onUrlChange ( function ( newUrl ) {
611
+ $browser . onUrlChange ( function ( newUrl , ev ) {
578
612
if ( $location . absUrl ( ) != newUrl ) {
579
613
$rootScope . $evalAsync ( function ( ) {
580
614
var oldUrl = $location . absUrl ( ) ;
581
615
582
616
$location . $$parse ( newUrl ) ;
583
- afterLocationChange ( oldUrl ) ;
617
+ afterLocationChange ( oldUrl , ev ) ;
584
618
} ) ;
585
619
if ( ! $rootScope . $$phase ) $rootScope . $digest ( ) ;
586
620
}
@@ -598,8 +632,10 @@ function $LocationProvider(){
598
632
defaultPrevented ) {
599
633
$location . $$parse ( oldUrl ) ;
600
634
} else {
601
- $browser . url ( $location . absUrl ( ) , $location . $$replace ) ;
635
+ $browser . url ( $location . absUrl ( ) , $location . $$replace , $location . $$state , $location . $$title ) ;
602
636
$location . $$replace = false ;
637
+ $location . $$state = null ;
638
+ $location . $$title = null ;
603
639
afterLocationChange ( oldUrl ) ;
604
640
}
605
641
} ) ;
@@ -610,8 +646,8 @@ function $LocationProvider(){
610
646
611
647
return $location ;
612
648
613
- function afterLocationChange ( oldUrl ) {
614
- $rootScope . $broadcast ( '$locationChangeSuccess' , $location . absUrl ( ) , oldUrl ) ;
649
+ function afterLocationChange ( oldUrl , ev ) {
650
+ $rootScope . $broadcast ( '$locationChangeSuccess' , $location . absUrl ( ) , oldUrl , ev ) ;
615
651
}
616
652
} ] ;
617
653
}
0 commit comments