Eu quero usar a função $ watch () para obter a URL atual, quando ela mudar, faça algo.
Mas no início, quando a URL muda, nada aconteceu. Eu costumava escrever assim, o que é ERRADO:
$scope.$watch('$location.path()', function(value){
console.log(value);
}
Isso está errado porque,
$ scope. $ watch (watchExpression, callbackFunction);
“O primeiro parâmetro do método $ watch (a“ watchExpression ”) pode ser uma expressão de string Angular (que é avaliada em relação ao $ scope) ou uma função, que é chamada com $ scope como o primeiro parâmetro.“ Eu encontrei esta explicação de <a href=” http://stackoverflow.com/questions/14932119/why-angular-js-parameter-of-a-watch-function-should-be-a-scope-variable”> stackoverflow </ a>
Também fornece um <a href=” http://jsfiddle.net/vojtajina/w39eL/”> ótimo exemplo para ilustrar </a>
Depois de ler, eu mudo meu código para este:
$scope.$watch(function(){
return $location.path();
}, function(value){
console.log(value);
}
Funciona! Sempre que clico em um link que altera o URL, o console imprime o URL.