угловые вложенные представления не работают

0

Я хочу создать почтовое клиентское приложение, в котором пользователь сначала увидит панель входа в систему, а затем будет перенаправлен на основное представление с несколькими другими видами внутри. Как полученные электронные письма, удаленные, спам-экт. Для этого я использовал ui-router и вложенные представления, а мой код конфигурации выглядел следующим образом:

app.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise('/login');

$stateProvider
.state('/',{
    url: '/login',
    templateUrl: 'views/login.html',
    controller: 'loginCTRL'
})
.state('main',{
    url: '/main',
    templateUrl: 'views/mainView.html',
    controller: 'MailCtrl'

}),
.state('main.received', {
    url: '/received',
    templateUrl: '/views/received.html' ,
    controller: 'receivedCTRL'
     })

     })
.state('main.spam', {
    url: '/spam',
    templateUrl: '/views/spam.html',
    controller: 'spamCTRL' 

     })
.state('main.removed', {
    url: '/removed',
    templateUrl: '/views/removed.html',
    controller: 'removedCTRL' 

     })
.state('main.message', {
    url: '/message',
    templateUrl: '/views/FullMessage.html',
    controller: 'MailCtrl' 

     }) });

Но вместо отображения всех вложенных представлений на моей панели электронной почты он отправляет меня обратно в режим входа в систему. Все пути верны.

  • 0
    views/mainView.html ли вы предоставить содержание views/mainView.html ?
  • 0
    jsfiddle.net/g6j7e6yp <--- вот оно. Раздел пользовательского интерфейса находится в самом низу кода.
Показать ещё 9 комментариев
Теги:
angular-ui-router
frontend

2 ответа

0
Лучший ответ

Убедитесь, что шаблон, используемый в main состоянии, имеет безымянный ui-view. Что-то вроде:

<div ui-view></div>

В родительских состояниях требуется не менее 1 ui-view для его заполнения (если вы не используете какую-либо действительно расширенную конфигурацию)

ОБНОВИТЬ

При использовании ui-router используйте $state вместо $location. $state - это сервис, предназначенный для навигации между государствами и может использоваться с именами государств.

В вашем loginCtrl попробуйте изменить $location.path для $state.go('main') (не забудьте включить зависимость для $state в параметрах контроллера)

Кроме того, при создании ссылок в HTML используйте ui-sref="state_name" как предложил Джадсон Террелл.

Обычно, когда ui-router перенаправляет URL-адрес по умолчанию, потому что он не смог найти состояние для предоставленного URL-адреса. При таком подходе вы можете убедиться, что URL-адрес, предоставленный браузеру, такой же, как тот, который настроен для ваших состояний.

Если это не работает, попробуйте также комментировать $urlRouterProvider.otherwise чтобы избежать перенаправления.

  • 0
    Кроме того, я не уверен, является ли / является допустимым именем штата ... Я бы изменил его на что-то другое на всякий случай
0

Может, в этом и проблема? Вам это нужно?

$stateProvider
    .state("otherwise", { url : '/login'})

также я предполагаю, что вы так связываетесь..

<a ui-sref="mystate">Go To My State</a>

Ещё вопросы

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