Установка переменной в сервисе .config в Angular JS?

0

У меня есть этот код...

spa.factory("linkFactory", function() {
    var linkFactoryObject = {};
    linkFactoryObject.currentLink = "home";
    return linkFactoryObject;
});

Этот фрагмент действует как глобальная переменная, которую я устанавливаю и читаю между разными контроллерами. Эта переменная контролирует, какая ссылка отмечена как активная.

Мой код работает очень хорошо. Единственная проблема заключается в том, что если я не установлю начальное значение на заводе, когда вы впервые входите на мою веб-страницу, home ссылка не будет установлена в активную. Если я задаю начальное значение, тогда, когда кто-то обновит страницу, значение будет сброшено до начального значения. Это означает, что ссылка на главную страницу будет активной, но вы фактически будете на другой странице.

Кроме того, я попытался использовать $location.path() чтобы получить свой путь и построить функцию с этого значения, но $location.path() является статическим, так что это тоже не сработает.

У меня есть этот фрагмент маршрута, который контролирует, какой контент я загружаю...

spa.config(function($routeProvider, $locationProvider) {
    $routeProvider
            .when('/home', {
                templateUrl: '/partials/home.html'
            })
            .when('/about', {
                templateUrl: '/partials/about.html'
            })
            .when('/skills', {
                templateUrl: '/partials/skills.html'
            })
            .when('/experience', {
                templateUrl: '/partials/experience.html'
            })
            .when('/resume', {
                templateUrl: '/partials/resume.html'
            })
            .when('/contact', {
                templateUrl: '/partials/contact.html'
            })
            .otherwise({
                redirectTo: '/home'
            });
});

Если бы я мог каким-то образом установить здесь переменную, которую я мог бы читать в своих контроллерах, мне было бы хорошо идти, но я не уверен, как это сделать.

Как бы я это сделал?

Теги:
dynamic
variables
config

2 ответа

0

Вместо регистрации события $ routeChangeStart. Вы также можете определить контроллер по умолчанию, если нет необходимости определять отдельные контроллеры для каждой страницы. А в контроллере вы можете установить значение для текущей ссылки.

Я бы рекомендовал вам просто определить переменную области видимости для этой цели и проверить переменную scope, чтобы установить соответствующий класс в ссылки.

На этом есть хорошая тема.

Как выделить текущий пункт меню?

  • 0
    Как определить переменную области действия в функции when?
  • 0
    @Allenph Я хочу определить переменную области видимости в контроллере. Я бы предложил определить контроллер для каждой страницы и зарегистрировать контроллер на странице, когда функция.
Показать ещё 1 комментарий
0

Попробуй это. Он должен устанавливать URL-адрес маршрута при изменении состояния

spa.factory("linkFactory", function() {
        var linkFactoryObject = {};
        linkFactoryObject.currentLink = "home";
        linkFactoryObject.setRoute = function(route) 
        {
          linkFactoryObject.currentLink = route;
        };
        return linkFactoryObject;
    });

    spa.run(['linkFactory','$rootScope',function(linkFactory,$rootScope) {
      $rootScope.$on('$routeChangeStart', function(event, next, current) {
        linkFactory.setRoute(next.$$route.originalPath);
      });
    });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню