@zagamay_ru

Angular ui.router — не срабатывает controller: '' и templateUrl: ''?

Здравствуйте!

Только начал изучать angularjs,
столкнулся с проблемой построения урл для локализации,
например:
/ru/
/en/
/en/about/
/en/contacts/


Стоит
angularjs 1.4.8
ngRouter 1.4.8
ui-router 0.2.15

Сам роутер

module.exports = App.Angular
	.config(['$stateProvider', '$urlRouterProvider', '$locationProvider',
		function($stateProvider, $urlRouterProvider, $locationProvider) {
			$locationProvider.html5Mode(true);
			
			$urlRouterProvider.otherwise('/' + App.Lang + '/');

			$stateProvider
				.state('root', {
					url: '/{lang:ru|en|de}',
					abstract: true,
				})

				.state('root.home', {
					url: '/',
					templateUrl: '/frontend/app/template/index.php',
					controller: 'MainController',
				})
				
				.state('root.home.about', {
					url: 'about/',
					templateUrl: '/frontend/app/template/about.php',
					controller: 'AboutController'
				});

		}
	]);


Вроде всё логично, при урлах /ru/, /en/, /de/ должен запускаться контроллер MainController и редерить шаблон /frontend/app/template/index.php, но ничего не происходит, консоль молчит.

.state('home', {
					url: '/{lang:ru|en|de}/',
					templateUrl: '/frontend/app/template/index.php',
					controller: 'MainController',
				})
				.state('home.about', {
					url: 'about/',
					templateUrl: '/frontend/app/template/about.php',
					controller: 'AboutController'
				});


Попробовал так прописать, только главная отрабатывает, а при переходе на /ru/about/ урл меняется, но срабатывает контроллер в state HOME, не пойму как тут настроить надо правильно, подскажите пожалуйста.
такое ощущение что они все наследуются, не только урлы, но и cntr, templates
PS На мануал не кидайте, английский не знаю =)
  • Вопрос задан
  • 427 просмотров
Решения вопроса 1
@zagamay_ru Автор вопроса
Нашёл решение, добавил template: '' и указывал шаблон с контроллером через views

$stateProvider
			.state('root', {
				url: '/{lang:ru|en|de}',
				abstract: true,
				template: '<div ui-view></div>'
			})
			.state('root.home', {
				url: '/',
				views: {
		            '': {
		                templateUrl: '/frontend/app/template/index.php',
		                controller: 'MainController'
		            }
		        }
			})
			.state('root.about', {
				url: '/about/',
				views: {
		            '': {
		                templateUrl: '/frontend/app/template/about.php',
		                controller: 'AboutController'
		            }
		        }
			});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы