Based on comments, and due to the fact that @Thinkerer (the OP – original poster) created a plunker for this case, I decided to append another answer with more details.
- Here is a plunker created by @Thinkerer
- here is its updated and working version
The first and important change:
// instead of this
$urlRouterProvider.otherwise('/tab/post');
// we have to use this
$urlRouterProvider.otherwise('/tab/posts');
because the states definition is:
.state('tab', {
url: "/tab",
abstract: true,
templateUrl: 'tabs.html'
})
.state('tab.posts', {
url: '/posts',
views: {
'tab-posts': {
templateUrl: 'tab-posts.html',
controller: 'PostsCtrl'
}
}
})
and we need their concatenated url '/tab' + '/posts'. That’s the url we want to use as a otherwise
The rest of the application is really close to the result we need…
E.g. we stil have to place the content into same view targetgood, just these were changed:
.state('tab.newpost', {
url: '/newpost',
views: {
// 'tab-newpost': {
'tab-posts': {
templateUrl: 'tab-newpost.html',
controller: 'NavCtrl'
}
}
because .state('tab.newpost' would be replacing the .state('tab.posts' we have to place it into the same anchor:
<ion-nav-view name="tab-posts"></ion-nav-view>
Finally some adjustments in controllers:
$scope.create = function() {
$state.go('tab.newpost');
};
$scope.close = function() {
$state.go('tab.posts');
};
As I already said in my previous answer and comments … the $state.go() is the only right way how to use ionic or ui-router
Check that all here
Final note – I made running just navigation between tab.posts… tab.newpost… the rest would be similar