2016-09-12 1 views
1

Ich habe eine kurze Frage über das Routen einer Route durch eine benutzerdefinierte Anweisung. Ich habe eine Menüleiste eingerichtet und eine Link-Funktion eingerichtet. Alles in dieser Funktion funktioniert korrekt, aber das chaning der URL durch die $location.path nicht. Auch nach der Verwendung von $rootScope.apply ändert sich nichts.AngularJs Pfad nicht ändern, auch nach dem Anwenden

define([ 
    '../module', 
    '../namespace' 
], 
function (module, namespace) { 
    module.directive(namespace + '.menubarDirective', function ($location,  $rootScope) { 
     return { 
      restrict: 'EA', 
      replace: 'true', 
      templateUrl: 'scripts/app/menubar/views/menubar.html', 
      scope: {}, 
      controller: function() { 
      }, 
      link: function (scope, element, attrs) { 

       $("#menubarStoreButton").click(function() { 
        $('.active').removeClass('active'); 
        $(this).addClass('active'); 
        $location.path('/store'); 
        $rootScope.$apply(); 
       }) 

      } 
     } 
    }); 
}); 

Um klar zu sein, verwende ich requirejs und $ Lage und $rootScope definiert sind. Das Seltsame ist, $location.path() vor dem Ersetzen gibt einen leeren Pfad. Außerdem funktioniert die Platzierung der Klasse "active" wie beabsichtigt.

Danke.

Antwort

1

Versuchen Sie es mit $ timeout -

$("#menubarStoreButton").click(function() { 
    $('.active').removeClass('active'); 
    $(this).addClass('active'); 
    $timeout(function() { 
     $location.path('/store'); 
    }); 
}) 
+0

danach versucht, erhalte ich Der Fehler, dass $ timeout nicht definiert ist. – user3197307

+0

inject $ timeout in Ihrer Direktive, wo Sie haben $ location – Disha

+0

Sorry, ich fühle mich jetzt sehr dumm. Ich habe vergessen, $ Timeout als Parameter zu deklarieren. jetzt funktioniert es wie vorgesehen! – user3197307

1

Ich frage mich, wenn Ihr Weg bereits /store ist, und Sie möchten, dass Ihre Seite neu zu laden navigieren versuchen versuchen $window.location.href = "/store"; ref: $location und $window

+0

Vielen Dank für eine Alternative! – user3197307

Verwandte Themen