2016-09-12 2 views
1

У меня есть быстрый вопрос о маршрутизации маршрута по специальной директиве. Я настроил диспетчер меню и установил функцию связи. Все в этой функции работает правильно, но настройка URL-адреса через $location.path не делает. Даже после использования $rootScope.apply он не изменяется.Угловая дорожка не меняется, даже после применения

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(); 
       }) 

      } 
     } 
    }); 
}); 

Чтобы было ясно, я использую requirejs и $ расположение и $rootScope определены. Странно, $location.path() перед заменой дает пустой путь. Кроме того, размещение класса «активно» работает по назначению.

Спасибо.

ответ

1

попробовать с помощью $ таймаут -

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

после попытки этого, я получаю ошибка в том, что $ timeout не определен. – user3197307

+0

введите $ timeout в свою директиву, где вы ввели $ location – Disha

+0

Извините, я чувствую себя очень немым прямо сейчас. Я забыл объявить $ timeout в качестве параметра. теперь он работает по назначению! – user3197307

1

Интересно, если ваш путь уже /store, и вы хотите, чтобы перезагрузить вашу страницу попробовать перейти попробовать $window.location.href = "/store"; реф: $location и $window

+0

Большое спасибо за альтернативу! – user3197307