$ http.get()触发$ locationChangeSuccess事件?

时间:2016-05-18 04:03:30

标签: javascript angularjs xmlhttprequest

我对$http的理解是,该服务包含浏览器的XMLHttpRequest以提供异步标注功能。但是,当我将$http$location一起使用时,我发现当请求产生成功响应时,调用$http.get()也会触发$locationChangeSuccess

为什么会这样?由于我浏览器中的网址没有更改,因此我不希望触发$locationChangeSuccess事件。 controller below说明了问题。

angular.module('fiddle', [])
  .controller('MainController', ['$scope', '$http', '$location'
    function($scope, $http, $location) {
      $scope.numberOfLocationChanges = 0;

      // Constructor
      $scope.__init__ = function() {            
        $http.get('/').then(
          function success(response) {
            console.log('success: %o', response);
          },
          function error(response) {
            console.log('error: %o', response);
          }
        );
      };

      $scope.handleLocationChangeSuccess = function() {
        $scope.numberOfLocationChanges++;
      };

      // Bind event handlers
      $scope.$on('$locationChangeSuccess',
        $scope.handleLocationChangeSuccess);

      // Call the constructor
      $scope.__init__();
    }
  ]);

如果重要,删除$location服务后,$locationChangeSuccess将不再被解雇。

0 个答案:

没有答案