$ locationStartChange和$ routeStartChange之间的关键区别

时间:2016-10-05 11:53:05

标签: javascript angularjs

$ locationStartChange和$ routeStartChange之间的关键区别?我知道他们的通话顺序。但这两个serv是不同的目的或功能?他们之间的区别(如果有的话)是什么?

2 个答案:

答案 0 :(得分:0)

<强> $ locationChangeStart

locationChangeStart事件可用于防止位置更改(单击链接或显式$ location.path(“/ something”);但是,此事件不会在后退按钮单击时触发。

<强> $ routeChangeStart

此事件的工作方式与$ locationChangeStart相反:它在$ location.path()更改和Back按钮点击时触发,但其preventDefault()不会停止位置更改。

$rootScope.$on("$locationChangeStart",function(event, next, current){ //do your validations here //prevent the location change. event.preventDefault(); });

$rootScope.$on("$routeChangeStart",function(event, next, current){ //do your validations here event.preventDefault();//this will NOT work. });

答案 1 :(得分:0)

他们是不同的。

$ locationChangeStart - 每次网址开始更改时都会收到回调。

$ routeChangeStart - 在调用注册路由或任何自己的网址参数时获取回调。

$routeProvider.when("/books/:book_id?read", {
  controller: "yourController",
  templateUrl: "/views/test.html"
});

$rootScope.$on('$locationChangeSuccess', function (event) {
 });

$rootScope.$on('$routeChangeStart', function (event) {
 });

$location.search('read', 'true');     // will trigger both
$location.search('unread', 'true');   // just $locationChangeSuccess
$location.path('/books');             // will trigger both