Ejemplo completo

Como ejemplo vamos a crear una aplicación con dos pantallas. En primer lugar definimos el contenido del fichero index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, 
            user-scalable=no, width=device-width">
    <title></title>
    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    <script src="cordova.js"></script>
    <script src="js/app.js"></script>
  </head>
  <body ng-app="starter">

    <ion-nav-bar class="bar-positive">
        <ion-nav-back-button class="button-clear">
            <i class="ion-chevron-left padding-left"></i>
        </ion-nav-back-button>
    </ion-nav-bar>
    <ion-nav-view></ion-nav-view>

  </body>
</html>

Este fichero carga todas las dependencias e inicia la carga del módulo starter de Angular. En el fichero js/app.js creamos dicho módulo y definimos ya las rutas que va a tener:

angular.module('starter', ['ionic'])

.config(function($stateProvider, $urlRouterProvider) {

    $stateProvider
        .state('home', {
          url: '',
          templateUrl: 'templates/home.html',
          controller: 'homeCtrl'
        })
        .state('about', {
          url: '/about',
          templateUrl: 'templates/about.html',
          controller: 'aboutCtrl'
        });

    // Página por defecto
    $urlRouterProvider.otherwise('');
})

Dentro de la carpeta templates vamos a colocar las dos plantillas que necesitaremos. La plantilla home.html con el siguiente contenido:

<ion-view title="Inicio">
  <ion-content>
    Aplicación de ejemplo.

    <a ui-sref="about">Información sobre el autor</a>
  </ion-content>
</ion-view>

Y la plantilla about.html con el contenido:

<ion-view title="Autor">
  <ion-content>
    El autor de esta aplicación es {{author.name}}.
  </ion-content>
</ion-view>

A continuación vamos a definir los controladores, los cuales los añadiremos también dentro del fichero js/app.js. El controlador para el estado home lo dejamos vacío ya que no necesita realizar ninguna acción:

.controller('homeCtrl', function($scope) {
    ;
})

En el controlador para el estado about cargamos el servicio aboutService y asignamos el valor devuelto por el método getAuthor() a una variable del $scope que será sustituida en la vista correspondiente:

.controller('aboutCtrl', function($scope, aboutService) {
    $scope.author = aboutService.getAuthor();
})

Por último añadimos el servicio aboutService también al fichero js/app.js:

.factory('aboutService', function() {
    return {
        getAuthor: function() {
            var author = { name: "Juan" };
            return author;
        },
    }
})

Una vez completado el código podemos probar la aplicación ejecutando en un terminal el comando:

$ionic serve

Last updated