У меня возникла проблема, когда после добавления templateUrl
в дочернее состояние ui-router
приложение больше не будет выполнять маршрутизацию в состояние. Он отлично работает, когда он просто шаблон.
app.js:
app.config(['$stateProvider', '$locationProvider', '$urlMatcherFactoryProvider', '$urlRouterProvider',
function ($stateProvider, $locationProvider, $urlMatcherFactoryProvider, $urlRouterProvider) {
$urlMatcherFactoryProvider.caseInsensitive(true);
$urlMatcherFactoryProvider.strictMode(false);
$urlRouterProvider.otherwise('/page-not-found');
$stateProvider
.state('dashboard', {
url: '/',
views: {
'header': {
template: 'header'
},
'nav': {
template: 'nav'
},
main: {
template: 'You are on the homepage'
}
}
});
$locationProvider.html5Mode(true);
}]);
app.run(['$rootScope', 'userService', '$state', function ($rootScope, user, $state) {
$rootScope.$on("$stateChangeError", console.log.bind(console));
if (!user.exists) {
$state.go('user.reg');
}
}]);
User.states.js:
.config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('user', {
url: '/users',
abstract: true,
views: {
'header': {},
'nav': {},
'main': {
template: '<ui-view/>'
}
}
})
.state('user.reg', {
url: '/register',
//template: 'This will show fine',
templateUrl: '/app/Users/User.login.html' // this will break
});
}]);
ОБНОВИТЬ
Если я добавлю ui-sref="user.reg"
на мои начальные страницы, я смогу перейти к ui-sref="user.reg"
состояния/страницы, с templateUrl
ui-sref="user.reg"
и template
. Так что это просто проблема, когда я пытаюсь использовать state.go('user.reg');
Это означает, что работа вокруг используется провайдером $location
для изменения пути. Имеет такой же эффект, но кажется довольно неправильным
Проблема связана с вашими относительными путями.
Посмотрите на этот код:
$locationProvider.html5Mode(true);
У вас включен режим html5, и для этого вам необходимо установить базовый номер ссылки в html, который, вероятно, выглядит следующим образом:
<base href="/">
Вероятно, ваша проблема связана с тем, что маршрут для вашего шаблона не является "yoursite.com/app/Users/User.login.html".
См. Этот Plunker для рабочей версии вашего кода. Затем зайдите в html-код и раскомментируйте базовый тег и обратите внимание, что он сломается.