since property known isn img javascript angularjs

javascript - property - ng-if



En AngularJS, ¿cómo agrego un $ watch en el hash de la URL? (4)

Esto también funciona si estás de acuerdo con no usar el reloj angular $. Básicamente, usted ve el evento de windows ''hashchange'' . Lo que haga angularJS es una envoltura alrededor de esto. Por ejemplo,

$($window).bind(''hashchange'', function () { // Do what you need to do here like... getting imageId from # var currentImageId = $location.search().imageId; });

Con Angular, ¿cómo puedo agregar un reloj que se dispara cuando se actualiza el hash, ya sea por mi aplicación o cuando el navegador actualiza la URL desde la barra de URL o los botones de avance / retroceso?


location.hash se puede actualizar internamente de forma angular o externamente por el usuario o el navegador (haga clic en el enlace en los marcadores). Si se actualiza internamente, angular ejecuta un $ scope. $ Apply (). Si un evento externo actualiza location.hash $ watch solo se dispara HASTA DESPUÉS del siguiente $ scope. $ Apply (), por ejemplo, un usuario presiona un botón dentro de su aplicación.

Si desea usar $ watch, agregue un detector de eventos adicional a "hashchange" para llamar a $ apply, o agregue toda la funcionalidad al oyente nativo de DOM Y NO se olvide de llamar a $ apply (), ya que se trata de una llamada externa.

window.addEventListener("hashchange", function(){ $scope.$apply(); }, false);

O ...

window.addEventListener("hashchange", function(){ me._locationHashChanged(); $scope.$apply(); }, false);


$locationChangeSuccess podría ser mejor.

$scope.$on(''$locationChangeSuccess'', function(event, newUrl, oldUrl){ // TODO What you want on the event. });


$scope.$watch acepta la función como primer argumento, por lo que puede hacer esto:

$scope.$watch(function () { return location.hash }, function (value) { // do stuff });

Pero recomendaría el uso de eventos , como $routeChangeSuccess para el enrutador predeterminado :

$scope.$on("$routeChangeSuccess", function () {})

o $stateChangeSuccess para ui-router

$scope.$on("$stateChangeSuccess", function () {})