Я пытаюсь настроить приложение. Он работал нормально, но затем мне пришлось изменить некоторые URL-адреса на u-router, чтобы иметь некоторые под-представления.
К сожалению, теперь я не вижу всех своих страниц правильно, и я не понимаю, почему.
Вот пример: http://codepen.io/anon/pen/LNQavV?editors=1010
В принципе, у меня разные шаблоны, и когда изменяется URL-адрес, я показываю другой шаблон в представлении appContent
. Внутри моих деталей, мне нужно иметь подвид под названием zone
, в которой я могу отобразить detailsOverview
шаблон или detailsEdit
шаблон.
С моей текущей настройкой я не могу изменить страницу. Ну, страница меняется в соответствии с URL, но detailsOverview
всегда отображается всегда!
Я думаю, что проблема как-то связана с подвью, а не с URL-адресами, но не на 100% уверен.
Я также вставляю здесь код $ StateProvider:
angular.module('ionicApp', ['ionic']).config([
'$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider.state('app', {
name: 'app',
url: '/app',
abstract: true,
templateUrl: 'templates/menuTemplate.html'
}).state('app.details', {
name: 'appDetails',
url: '/:zoneID',
views: {
'appContent': {
templateUrl: 'templates/mainDetails.html'
}
}
}).state('app.details.overview', {
name: 'appDetailsOverview',
url: '/details',
views: {
'appContent': {
templateUrl: 'templates/mainDetails.html'
},
'zone': {
templateUrl: 'templates/detailsOverview.html'
}
}
}).state('app.details.edit', {
name: 'appDetailsEdit',
url: '/edit/day/:timerEditDay',
views: {
'appContent': {
templateUrl: 'templates/mainDetails.html'
},
'zone': {
templateUrl: 'templates/detailsEdit.html'
}
}
}).state('app.setup', {
name: 'setup',
url: '/setup',
views: {
'appContent': {
templateUrl: 'templates/setup.html'
}
}
}).state('app.about', {
name: 'about',
url: '/about',
views: {
'appContent': {
templateUrl: 'templates/about.html',
controller: 'aboutPageInfo'
}
}
});
$urlRouterProvider.otherwise('app/');
}
]);
Проблема в том, что с url: '/:zoneID',
в состоянии app.details
вы "проглатываете" все возможные параметры.
Это означает, что URL-адрес url #/app/about
и #app/setup
также обрабатываются приложением app.details
и, похоже, не работают.
Чтобы заставить их работать, вы должны определить состояние app.about
и app.setup
до состояния app.details
:
$stateProvider.state('app', {
name: 'app',
url: '/app',
abstract: true,
templateUrl: 'templates/menuTemplate.html'
}).state('app.setup', {
name: 'setup',
url: '/setup',
views: {
'appContent': {
templateUrl: 'templates/setup.html'
}
}
}).state('app.about', {
name: 'about',
url: '/about',
views: {
'appContent': {
templateUrl: 'templates/about.html',
controller: 'aboutPageInfo'
}
}
}).state('app.details', {
name: 'appDetails',
url: '/:zoneID',
views: {
'appContent': {
templateUrl: 'templates/mainDetails.html'
}
}
}).state('app.details.overview', {
name: 'appDetailsOverview',
url: '/details',
views: {
'appContent': {
templateUrl: 'templates/mainDetails.html'
},
'zone': {
templateUrl: 'templates/detailsOverview.html'
}
}
})
Смотрите обновленный код с рабочей информацией и страницей настройки: http://codepen.io/anon/pen/BKPyMd?editors=1010