В идеале все 3 метода должны работать. Этот код ниже показывает все 3 метода.

Правильное и работающее приложение CodePen Demo

В настоящее время ни один из 3 методов не работает; панель навигации просто исчезает после нажатия кнопки (показывает пустую панель навигации), в то время как основная страница остается той же главной страницей.

Я не уверен, что это проблема кода, ионные проблемы или просто я не должен переходить на новую страницу с панели навигации. Последнее слишком нелогично, чтобы принять его.

Могут ли какие-нибудь добрые души знать, в чем проблема, и помочь мне, пожалуйста?

Мой основной код контента в index.html

{amp}lt;body animation="slide-left-right-ios7"{amp}gt; {amp}lt;ion-nav-bar class="bar-light nav-title-slide-ios7"{amp}gt;{amp}lt;/ion-nav-bar{amp}gt; {amp}lt;ion-nav-view{amp}gt;{amp}lt;/ion-nav-view{amp}gt; 

Кнопка HTML у меня (Обратите внимание, все 3 версии были проверены отдельно)

  {amp}lt;ion-view ng-controller="NavCtrl"{amp}gt; {amp}lt;ion-nav-buttons side="left"{amp}gt; {amp}lt;button class="button button-icon ion-compose" ng-click="create('tab.newpost')"{amp}gt;{amp}lt;/button{amp}gt; {amp}lt;button class="button button-icon ion-compose" ui-sref="tab.newpost"{amp}gt;{amp}lt;/button{amp}gt; {amp}lt;button class="button button-icon ion-compose" href="/tab/newpost"{amp}gt;{amp}lt;/button{amp}gt; {amp}lt;/ion-nav-buttons{amp}gt; {amp}lt;ion-content class{amp}gt; {amp}lt;!-- Rest of the content body here --{amp}gt; {amp}lt;/ion-content{amp}gt; {amp}lt;/ion-view{amp}gt; 

Код в nav.js в основном для метода state.create

 app.controller('NavCtrl', function ($scope, $location, $state, Post, Auth) { $scope.post = {url: 'http://', title: ''}; $scope.create = function(stateName) { /* $location.path('/tab/newpost'); */ $state.go(stateName); /* tried swapping stateName with 'tab.newpost' and func() */ }; }); 

Код для app.js (файл маршрута)

  var app = angular.module('MyApp', ['ionic','firebase']); app.config(function($stateProvider, $urlRouterProvider) { $stateProvider .state('tab', { url: '/tab', abstract: true, templateUrl: 'templates/tabs.html' }) .state('tab.posts', { url: '/posts', views: { 'tab-posts': { templateUrl: 'templates/tab-posts.html', controller: 'PostsCtrl' } } }) .state('tab.newpost', { url: '/newpost', views: { 'tab-newpost':{ templateUrl: 'templates/tab-newpost.html', controller: 'NewCtrl' } } }); /*   other states .... */ $urlRouterProvider.otherwise('/auth/login'); }); 

Первый метод, который вы использовали в соответствии с вашим кодом, выглядит следующим образом

 ng-click="create('tab/newpost')" 

Так должно быть

 ng-click="create('tab.newpost')" 

я думаю, что вам нужно изменить название состояний, чтобы вы могли перемещаться между ними

 var app = angular.module('MyApp', ['ionic','firebase']); app.config(function($stateProvider, $urlRouterProvider) { $stateProvider .state('tab', { url: '/tab', abstract: true, templateUrl: 'templates/tabs.html' }) .state('tab.posts', { url: '/posts', views: { 'tab-posts': { templateUrl: 'templates/tab-posts.html', controller: 'PostsCtrl' } } }) .state('tab.newpost', { url: '/newpost', views: { 'tab-posts':{ /* the same name of the above state */ templateUrl: 'templates/tab-newpost.html', controller: 'NewCtrl' } } }); /*   other states .... */ $urlRouterProvider.otherwise('/auth/login'); });