2016-11-22 1 views
1

Как получить доступ к URL-адресу в анонимной функции setTitle?В указателе URL-адреса поставщика углового маршрута на основе url

У меня есть что-то вроде ниже в моей настройке маршрута для Углового. Большинство маршрутов указывают на один и тот же контроллер, есть некоторые отличия в контроллере, но по существу проблема заключается в дублировании маршрутов. Поэтому я хочу перейти к чему-то, что имеет только одну запись в таблице, но нужно изменить SetWindowTitle, чтобы установить заголовок на основе параметра url. Код, который я отобразил, не работает, поскольку параметр producttype var не определен.

Текущий код:

.config(['$routeProvider', 
    function ($routeProvider) { 

    $routeProvider 
     .when('/mypage/round', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product round') 
       } 
      }, 
     }) 
     .when('/mypage/square', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product square') 
       } 
      }, 
     }) 
    // etc... 

Хотите что-то вроде:

$routeProvider 
     .when('/mypage/:producttype', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product ' + producttype) 
       } 
      }, 
     }) 

ответ

1

Мы можем получить доступ к URL маршрута в функции Resolve, вводя '$ маршрут'. Вот что вам нужно сделать:

$routeProvider 
    .when('/mypage/:producttype', { 
     templateUrl: 'product', 
     controller: 'productController', 
     resolve: { 
      setTitle: function($route) { 
       SetWindowTitle('product ' + $route.current.params.producttype) 
      } 
     }, 
    }) 

$ route.current - Состоят из всех текущих деталей маршрута URL, как контроллер, оригинальный путь, путь, шаблон URL и т.д.

+0

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

+0

Ваше приветствие, да, вам нужно поместить его в массив, который должен быть практикой на самом деле, но должен был просто дать вам ответ, изменив фрагмент кода, поэтому пропустил его. –