离子框架内的导航和状态

时间:2015-03-01 13:11:27

标签: angularjs ionic-framework ionic

我正在尝试制作第一次使用它的应用程序,我在本地保存了一些信息。我的目的是,当下一次打开应用程序时,它将显示另一页。 问题是我不知道如何从我的控制器功能加载一个简单的页面(不是像模板这样的部分)。

这里是我的HTML

<body ng-app="starter" ng-controller="MainCtrl">
    <ion-content class="center" [....]
<button class="button button-calm button-full button-clear button-large" ng-click="saveAll(name, job)">
                <span style="font-size: 1.4em;">start</span>
              </button>
</ion-content>
</body>

app.js

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider.state('home', {
    url: "/home",
    controller: "HomeCtrl",
    template: "<h1>Home page</h1>"
  })
  $urlRouterProvider.otherwise('/first')
})

.controller('MainCtrl', function($scope, $localstorage, $location) {
  $scope.setName = function(name) {
    if (name) {
      $localstorage.set('name', name.toLowerCase());
      console.log(name);
    }
  }
  $scope.getName = function() {
    alert($localstorage.get('name'));
  }
  $scope.setJob = function(job) {
    if (name) {
      $localstorage.set('job', job.toLowerCase());
      console.log(job);
    }
  }
  $scope.getJob = function() {
    alert($localstorage.get('job'));
  }
  $scope.saveAll = function(name, job) {
    if (name) {
      $localstorage.set('name', name.toLowerCase());
      console.log(name);
    }
    if (job) {
      $localstorage.set('job', job.toLowerCase());
      console.log(job);
    }
    if (name && job) {
      $location.path("home");

    }
  }
})

1 个答案:

答案 0 :(得分:1)

您可以使用以下方式导航路线:

$location.path('/home');

或:

$state.go('home');

所以..在你的MainCtrl中你可以放这样的东西:

$scope.getName = function() {
    return $localstorage.get('name');
};

$scope.getJob = function() {
    return $localstorage.get('job');
};

var init = function(){
    if($scope.getName() && $scope.getJob()){
        $location.path('/home');
    }
};

init();

更新:

Ionic默认安装了ui-router。 ui-router documentation

每条路线都接受 templateUrl 属性。我不知道你的文件夹结构是哪个,所以你需要更改它们才能正常工作:

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
    .state('home', {
      url: '/home',
      controller: 'HomeCtrl',
      templateUrl: 'home/home.html'
    })    
    .state('first', {
      url: '/first',
      controller: 'FirstCtrl',
      templateUrl: 'first/first.html'
    })
    .state('second', {
      url: "/second",
      controller: "SecondCtrl",
      templateUrl: 'second/second.html'
    });

  $urlRouterProvider.otherwise('/first');
})