2016-07-27 7 views
0

Я знаю, что это хорошо спрошенный вопрос, но могут быть мои навыки «googleing» недостаточно хороши, чтобы получить от меня то, что я хочу.ui.router не показывает страницу [вложенное представление]

Поэтому у меня есть страница с ng-view, что является основным index.html

<div class="row" style="margin-top: 70px;" ui-view></div> 

Теперь у меня есть представление с шаблоном URL из student.html

<div class="col-md-10 col-md-offset-1" ng-controller="Controller_Parent"> 
<div ng-cloak> 
    <md-tabs md-dynamic-height md-border-bottom> 
     <md-tab label="View Profile" ui-view="student.profile"> 
     </md-tab> 
     <md-tab label="View Results" ui-view="student.result"> 
     </md-tab> 
     <md-tab label="View Attendance" ui-view="student.attendance"> 
     </md-tab> 
    </md-tabs> 
</div> 
</div> 

As код указывает на то, что в Controller_A я хочу, чтобы три представления (правильные подзадачи), каждый из которых имеет свой собственный шаблон.

Код маршрутизации заключается в следующем:

app.config(function($stateProvider, $urlRouterProvider) {  
    $urlRouterProvider.otherwise('/'); 
    $stateProvider 
    .state('home', { 
     url: '/', 
     templateUrl: 'templates/login.html', 
    }).state('student',{ 
     url:'/student', 
     views:{ 
      '@':{ 
       templateUrl: 'templates/student.html', 
      }, 
      '[email protected]':{ 
       templateUrl:'templates/student/profile.html' 
      }, 
     } 
    }); 
}); 

Что chages я должен сделать, чтобы сделать эту идею работы. Я прошел через учебники, и, к сожалению, ни один из них не имеет схожей работы или может быть, я ищу неправильное пространство.

Ожидает ввода. С уважением!

PS: нет JS ошибки не выбрасываются

+0

Вы изменяя свое состояние на 'student'? Кроме того, избегайте использования ng-контроллера внутри вашего html. – krutkowski86

+0

Да. Это страница панели инструментов (student.html), поэтому она перенаправляется на ученика по странице входа в систему. –

+0

@ krutkowski86 Кстати, я добавил тезис в класс ученика, на котором угловой дает ошибку «Ошибка: не может перейти к абстрактному состоянию» ученик » –

ответ

1

Посмотрите https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views#view-names---relative-vs-absolute-names. Кажется, что вы смешиваете имена имен, такие как student.profile с синтаксисом ссылок ([email protected]). Поэтому попробуйте пропустить student. в вашем шаблоне.

Также вы должны зарегистрировать свой контроллер в государственной конфигурации (возможно, с общим родительским состоянием), а не шаблон непосредственно ...

+0

Просто попробовал. Все еще не работает. Нужно ли мне переводить $ state.transition или какой-то вид? –

1

Я сделал jsfiddle, который похож на код и он работает. Основное отличие заключается в том, что вы не должны префикс вложенными взгляды внутри директивы UI-вид с student.

http://jsfiddle.net/irhabi/3ozfxmfx/

<md-tab label="View Profile" ui-view="profile"></md-tab> 
<md-tab label="View Results" ui-view="result"></md-tab> 
<md-tab label="View Attendance" ui-view="attendance"></md-tab> 
+0

Нет. @jaegle сказал то же самое и все еще не работает. Нет просмотра или ошибки. –

+0

Добавьте это в свое приложение, если вы хотите увидеть ошибки ui-router. .run (функция ($ rootScope, $ state, $ stateParams) { $ rootScope. $ On ('$ stateChangeError', console.log.bind (консоль)); }) – krutkowski86

+0

nope. Нет ошибок. –