2015-03-01 6 views
0

Я изучаю Угловое, переписывая веб-приложение JS в Angular, и у меня есть некоторые проблемы с заменой ngRoute на ui-router. Хотя я понимаю, что он предназначен для создания SPA, я только переписываю ветку страниц в угловом формате.Изменение URL-адреса URL-адреса Угловой UI-маршрутизатор

Мое настоящее понимание заключается в том, что для ui-routing вам необходимо определить корневой маршрут '/'. Шахта выглядит примерно так:

var memberPage = angular.module('memberPage', ['ui.router']); 

memberPage.config(['$stateProvider', function($stateProvider){ 

     $stateProvider 
      .state('userpage', { 
        url: '/', 
        template: '<h1>test</h1>', 
        controller: 'dashBoardController' 
      }) 
}]); 

Проблема, я думаю, состоит в том, что пользователь никогда не совершает этот маршрут. Пользователь регистрируется и перенаправляется на/users /: id, а страница, отображаемая с помощью этого маршрута, загружает угловое приложение.

The (Синатр) маршрутизация, что происходит на стороне сервера до загрузки Угловой приложение:

get '/' do 
redirect "/login" 
end 

get '/login' do 
    redirect_to_userpage_if_logged_in 
    erb :login 
end 

post '/login' do 
    redirect '/login' unless user_exists(params) 
    if correct_password(params) 
    set_session 
    redirect "https://stackoverflow.com/users/#{session[:user_id]}" 
    else 
    redirect '/login' 
    end 
end 

get '/users/:user_id' do |id| 
     @user = User.find(id) 
     erb :'users/index' # from this point I want to run my angular app 
end 

Я искал способ сказать UI-маршрутизатору, он должен рассматривать этот маршрут в качестве приложений корневой маршрут, делая url: '/users/:id', но это не работает.

Есть ли способ достичь того, что я ищу?

Заранее спасибо

EDIT:

Мой бог, я забыл поставить основной нг-приложение = директива «MYAPP» где-то в моем HTML, который объясняет, почему мое первоначальное состояние никогда не стал активным. Изменив это, моя первоначальная конфигурация работает отлично.

Я не уверен, удалить этот вопрос или сохранить его здесь для образовательных целей.

+0

У меня отсутствуют некоторые данные, когда вы говорите: «Пользователь входит в систему и перенаправляется», можете ли вы предоставить код, который перенаправляется после входа в систему? Если вы имеете в виду, что пользователь перенаправляется перед выполнением каких-либо действий, добавьте маршруты на стороне сервера. –

+0

Отредактировано, спасибо. –

+0

вы можете попробовать добавить строку '$ urlRouterProvider.otherwise ("/");' в конфигурацию вашего маршрутизатора. Добавление сервиса соответствующим образом. –

ответ

1

Определенные маршруты жизнеспособны после #. Таким образом, маршрут, определенный как /, будет доступен по адресу /users/:id#/ или /users#/ или даже /#/.

+0

Выбрали это как правильный ответ, потому что это заставило меня понять, что роль # в угловой маршрутизации –