Вкладки в angularjs не работают должным образом с UI-Router и UI-bootstrap
Я использую шаблон MEAN.js, вы можете найти весь кодВот.
Я попытался добавить 2 новые вкладки на страницу, отображаемую после выбора одной из статей в списке. Для этой задачи я решил использовать UI-Router и UI-Bootstrap для Angular.js. 2 вкладки не работают должным образом, я могу переключаться между ними и правильно видеть их содержимое, но иногда, когда я возвращаюсь и выбираю пункт меню списка статей, я получаю пустую страницу с 2 вкладками и ничего больше.
Вот изменения в файле view-article.client.view.html, включающие 2 новые вкладки (предыдущее содержимое было скопировано в 2 файла, содержащие частичное для новых вкладок):
<div ng-controller="ArticlesController">
<tabset>
<tab
ng-repeat="t in tabs"
heading="{{t.heading}}"
select="go(t.route)"
active="t.active">
</tab>
</tabset>
<div ui-view></div>
</div>
Я вставил в контроллер статей несколько строк кода:
$scope.tabs = [
{ heading: 'SubA', route:'viewArticle.SubA', active:false },
{ heading: 'SubB', route:'viewArticle.SubB', active:false }
];
$scope.go = function(route){
$state.go(route);
};
$scope.active = function(route){
return $state.is(route);
};
$scope.$on('$stateChangeSuccess', function() {
$scope.tabs.forEach(function(tab) {
tab.active = $scope.active(tab.route);
});
});
Вот route.js
'use strict'
angular.module('articles').config(['$stateProvider',
function($stateProvider) {
$stateProvider.
state('listArticles', {
url: '/articles',
templateUrl: 'modules/articles/views/list-articles.client.view.html'
}).
state('createArticle', {
url: '/articles/create',
templateUrl: 'modules/articles/views/create-article.client.view.html'
}).
state('viewArticle', {
url: '/articles/:articleId',
templateUrl: 'modules/articles/views/view-article.client.view.html'
}).
state('editArticle', {
url: '/articles/:articleId/edit',
templateUrl: 'modules/articles/views/edit-article.client.view.html'
}).
state('viewArticle.SubA', {
url: '/SubA',
templateUrl: 'modules/articles/views/view-article.client.view.SubA.html'
}).
state('viewArticle.SubB', {
url: '/SubB',
templateUrl: 'modules/articles/views/view-article.client.view.SubB.html'
});
}
]);