2017-08-22 1 views
0

Ich versuche, mit dem folgenden Code zu einer bestimmten URL zu verhindern navigierenLocationChangeStart Ereignis prevent funktioniert nicht

run(['$rootScope', '$location', function ($rootScope,$location) { 
     $rootScope.$on('$locationChangeStart', function (event, next, current) { 
      if (next) { 
       if (isProhibetedUrl(next)) { 
        event.preventDefault(); 
       } 
      } 
     }); 

aber es funktioniert nicht, und ich geben Sie eine Schleife von 10 verdaut. Ich habe auch $ routeChangeStart ohne Erfolg versucht.

Antwort

0

So verwende ich es mit $ routeStartChange. Dies ist, nachdem Sie das Modul definiert haben.

Vergewissern Sie sich auch, dass 'angular-route.js' in Ihrem HTML enthalten ist und Abhängigkeit in Moduldefinition injiziert wird.

var app = angular.module('myapp', ['ngRoute',..... 
+0

Danke. Ich habe diese Implementierung ohne Erfolg versucht. Es bewegt sich immer noch zur nächsten Seite – user3009752

+0

Ich hoffe, Sie haben $ routeProvider.when (.. blockieren alle Setup, – zingh

0

Es funktioniert einwandfrei. Bitte beziehen Sie sich auf den folgenden Plunkr. Versuchen Sie, dasselbe auf Ihren Code anzuwenden.

Plunkr:here

Also, nur einige Frage, betritt er die, wenn die Bedingung, wenn die Bedingung erfüllt ist, können Sie eine console.log tun und die Bedingungen. Wenn nicht, dann versuchen Sie, eine JSfiddle oder Plunkr nur mit dem Problem zu adressieren, es wird leicht zu debuggen sein. Vielen Dank.

Code:

app.run(function($rootScope, $location) { 
     //when the route is changed scroll to the proper element. 
     $rootScope.$on("$locationChangeStart", function(event, next, current) { 
     console.log(event); 
     console.log(next); 
     console.log(current); 
     if(next.indexOf("two") !== -1){ 
      console.log("preventing default"); 
      event.preventDefault(); 
     } 
     }); 
    }); 

Erläuterung:

Die nächste Strecke dann für das Schlüsselwort two, wenn seine Gegenwart überprüft wird, wird das Ereignis von propogating gestoppt. Bitte überprüfen Sie die Konsole, wenn die if-Bedingung eingegeben wird.

Verwandte Themen