Ios 使用$stateProvider和离子侧菜单进行导航在离子框架中不起作用

Ios 使用$stateProvider和离子侧菜单进行导航在离子框架中不起作用,ios,angularjs,ionic-framework,angular-ui-router,Ios,Angularjs,Ionic Framework,Angular Ui Router,我使用ionic CLI创建了一个应用程序 离子启动myApp侧菜单 离子平台添加ios 离子构建ios 离子模拟ios 然后我继续修改app.js,如下所示 angular.module('starter', ['ionic', 'starter.controllers']) .run(function ($ionicPlatform) { $ionicPlatform.ready(function () { if (window.cordova && wind

我使用ionic CLI创建了一个应用程序

  • 离子启动myApp侧菜单
  • 离子平台添加ios
  • 离子构建ios
  • 离子模拟ios
然后我继续修改app.js,如下所示

angular.module('starter', ['ionic', 'starter.controllers'])
.run(function ($ionicPlatform) {
  $ionicPlatform.ready(function () {
    if (window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);

    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }
  });
})
.config(function ($stateProvider, $urlRouterProvider) {
  $stateProvider
  .state('app', {
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'AppCtrl'
  })
  .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
        controller: 'RegisterCtrl'
      }
    }
  })
  .state('app.snap', {
    url: '/snap',
    views: {
      'menuContent': {
        templateUrl: 'templates/snap.html',
        controller: 'SnapCtrl'
      }
    }
  })
  .state('app.search', {
    url: '/search', 
    views: {
      'menuContent': {
        templateUrl: 'templates/search.html',
        controller: 'SearchCtrl'
      }
    }
  })
  .state('app.browse', {
    url: '/browse', 
    views: {
      'menuContent': {
        templateUrl: 'templates/browse.html',
        controller: 'BrowseCtrl'
      }
    }
  });
  $urlRouterProvider.otherwise('/app/snap');
});
angular.module('starter.controllers', [])
.controller('AppCtrl', function($scope, $ionicModal, $timeout) {
  $scope.loginData = {};
  $ionicModal
    .fromTemplateUrl('templates/login.html', { scope: $scope })
    .then(function(modal) { $scope.modal = modal; });
  $scope.closeLogin = function() {
    $scope.modal.hide();
  };
  $scope.login = function() {
    $scope.modal.show();
  };
  $scope.doLogin = function() {
    console.log('Doing login', $scope.loginData);
    $timeout(function() {
      $scope.closeLogin();
    }, 1000);
  };
})
.controller('RegisterCtrl', function($scope) {
  //TODO
})
.controller('SnapCtrl', function($scope, Camera) {
  //TODO
})
.controller('SearchCtrl', function($scope) {
 //TODO
})
.controller('BrowseCtrl', function($scope) {
 //TODO
});
我修改了controller.js,如下所示

angular.module('starter', ['ionic', 'starter.controllers'])
.run(function ($ionicPlatform) {
  $ionicPlatform.ready(function () {
    if (window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);

    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }
  });
})
.config(function ($stateProvider, $urlRouterProvider) {
  $stateProvider
  .state('app', {
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'AppCtrl'
  })
  .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
        controller: 'RegisterCtrl'
      }
    }
  })
  .state('app.snap', {
    url: '/snap',
    views: {
      'menuContent': {
        templateUrl: 'templates/snap.html',
        controller: 'SnapCtrl'
      }
    }
  })
  .state('app.search', {
    url: '/search', 
    views: {
      'menuContent': {
        templateUrl: 'templates/search.html',
        controller: 'SearchCtrl'
      }
    }
  })
  .state('app.browse', {
    url: '/browse', 
    views: {
      'menuContent': {
        templateUrl: 'templates/browse.html',
        controller: 'BrowseCtrl'
      }
    }
  });
  $urlRouterProvider.otherwise('/app/snap');
});
angular.module('starter.controllers', [])
.controller('AppCtrl', function($scope, $ionicModal, $timeout) {
  $scope.loginData = {};
  $ionicModal
    .fromTemplateUrl('templates/login.html', { scope: $scope })
    .then(function(modal) { $scope.modal = modal; });
  $scope.closeLogin = function() {
    $scope.modal.hide();
  };
  $scope.login = function() {
    $scope.modal.show();
  };
  $scope.doLogin = function() {
    console.log('Doing login', $scope.loginData);
    $timeout(function() {
      $scope.closeLogin();
    }, 1000);
  };
})
.controller('RegisterCtrl', function($scope) {
  //TODO
})
.controller('SnapCtrl', function($scope, Camera) {
  //TODO
})
.controller('SearchCtrl', function($scope) {
 //TODO
})
.controller('BrowseCtrl', function($scope) {
 //TODO
});
services.js修改如下(大部分取自)

My menu.html修改如下

<ion-side-menus enable-menu-with-back-views="false">
  <ion-side-menu-content>
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button></ion-nav-back-button>
      <ion-nav-buttons side="left">
        <button class="button button-icon button-clear ion-navicon" menu-toggle="left"></button>
      </ion-nav-buttons>
    </ion-nav-bar>
    <ion-nav-view name="menuContent"></ion-nav-view>
  </ion-side-menu-content>

  <ion-side-menu side="left">
    <ion-header-bar class="bar-stable">
      <h1 class="title">MyMenu</h1>
    </ion-header-bar>
    <ion-content>
      <ion-list>
        <ion-item menu-close ng-click="login()">
          <i class="icon ion-person"></i> Login
        </ion-item>
        <ion-item menu-close href="#/app/register">
          <i class="icon ion-person-add"></i> Register
        </ion-item>
        <ion-item menu-close href="#/app/snap">
          <i class="icon ion-camera"></i> Snap
        </ion-item>
        <ion-item menu-close href="#/app/search">
          <i class="icon ion-search"></i> Search
        </ion-item>
        <ion-item menu-close href="#/app/browse">
          <i class="icon ion-android-document"></i> Browse
        </ion-item>
      </ion-list>
    </ion-content>
  </ion-side-menu>
</ion-side-menus>

我的菜单
登录
登记
断裂
搜寻
浏览
当我在iOS模拟器中运行它时,总是单击登录链接菜单项work(一个模式显示)。但是,单击任何其他菜单项仅对单击的第一个菜单项有效。例如,如果单击“注册”,则会显示“注册”页面,但单击任何其他菜单项都不起作用(注册页面将继续显示)。这种行为也会出现在android emulator(
ionic Simulate android
)和浏览器(
ionic serve
)上


你知道我做错了什么吗

.controller('SnapCtrl',function($scope,Camera){…
,检查它是否定义了..?它是在services.js中定义的(刚刚发布)。@JaneWayne尝试创建一个Plunkr,以便我们很容易找到我忘记在我的服务中连接的问题。
angular.module('starter',['ionic',starter.controllers'))
需要是
angular.module('starter',['ionic','starter.controllers','starter.services'])
.Sorry.try
href=“#/register”
在您的状态url中查找
url:'/register',
控制器('SnapCtrl',函数($scope,Camera)中的
摄像头是什么{…
,检查它是否定义了…?它是在services.js(刚刚发布)中定义的。@JaneWayne尝试创建一个Plunkr,以便我们容易找到我忘记在我的服务中连接的问题。
angular.module('starter',['ionic','starter.controllers'))
需要是
angular.module('starter',['IONAL'、'starter.controllers'、'starter.services'])
.Sorry.try
href=“#/register”
在您的州url中查找
url:'/register',