我对$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
将不再被解雇。