2013-07-11 2 views
0

Я пытаюсь понять, как я могу настроить свою маршрутизацию с помощью angularJS в следующем случае:AngularJS маршрутизация для динамических URL-адресов, как?

У нас есть страница поиска, на которой мы показываем результаты поиска на основе предоставленных тегов (теги 1..n). мы хотели бы, чтобы пользователь мог анализировать ввод URL-адреса следующим образом и нашей системой, чтобы выполнить поиск и показать соответствующие результаты.

Формат URL должен быть:

http://mywebsite.com/search/<term1>/<term2>/<termN> ... так что это может быть разное количество терминов.

Я искал маршрут и не мог найти способ сделать это динамически.

я увидел, что я мог бы поставить в routeprovid:

.when('/search/:searchParams', ... но который обрабатывает только тогда, когда у меня есть один член ... есть в любом случае, чтобы настроить его, чтобы взять столько термины, как дано?

ответ

0

Вам это вообще помогает? Кажется, поддерживает динамическую маршрутизацию, и вы могли бы, возможно, разделить параметр: name, чтобы сделать то, что вы пожелаете.

http://gregorypratt.github.io/AngularDynamicRouting/

Кен

0

Вы можете попробовать base64ing ваши searchParams:

.when('/search/:searchParams', {controller:'SearchCtrl'}) 

function SearchCtrl($routeParams, $location){ 
    //Assuming your params are an array like ['param1', 'param2', 'param3'] 
    //You could easily adapt this to base64 a JSON object 
    function encodeParams(params){ 
     return window.btoa(params.join(';')); 
    } 

    function decodeParams(string){ 
     return window.atob(string).split(';'); 
    } 

    var searchParams = decodeParams($routeParams.searchParams); 

    scope.search = function(params){ 
     $location.path('/search/' + encodeParams(params)); 
    } 
} 
0

Мое решение может быть выглядит не так рада, но это работает, по крайней мере:

Вы можете организовать ваши маршруты в пути

yoursite.com/term1Name/**:param1**/term2Name/**:param2**/term3Name/**:param3** 

Чтобы было ясно, вы можете делать маршруты, как маршруты REST. Например, я хочу пойти в список из услуг:

www.yoursite.com/servises/ 

Перейти к одной из услуг:

www.yoursite.com/servise/:id 

И если я хочу, чтобы увидеть некоторые детали обслуживания я сделаю:

www.yoursite.com/servise/:id/details 

и так

www.yoursite.com/servise/:id/detail/:id 
Смежные вопросы