On Github irontec / slides-ionic-recap
Mikel Eizagirre @ Irontec 2016
npm install -g ionic cordova
ionic start PROJECT_NAME [blank | tabs | sidemenu]
PROJECT_NAME
├── bower.json
├── config.xml
├── gulpfile.js
├── hooks
├── ionic.config.json
├── node_modules
├── package.json
├── plugins
│ ├── cordova-plugin-console
│ ├── cordova-plugin-device
│ ├── cordova-plugin-splashscreen
│ ├── cordova-plugin-statusbar
│ ├── cordova-plugin-whitelist
│ ├── fetch.json
│ └── ionic-plugin-keyboard
├── scss
│ └── ionic.app.scss
└── www
├── css
├── img
├── index.html
├── js
└── lib
cd PROJECT_NAME
ionic setup sass
Antes de empezar a añadir funcionalidades, dividimos el archivo app.js en app.js y core/config.
app.js: Declararemos el módulo general e inyectaremos las dependencias generales.
core/config.js: Moveremos la función run e iremos añadiendo las configuraciones de los providers aquí.
ionic serve [--lab]
Seguiremos la técnica de folder by feature.
Para añadir una nueva funcionalidad:
<!-- funcionalidad --> <script src="js/settings/settings.module.js"></ script> <script src="js/settings/settings.js"></ script>
angular.module('starter', ['ionic', 'starter.settings']);
angular
.module('starter.settings')
.controller('SettingsController', SettingsController);
function SettingsController(...) {
...
}
npm install -g bower
bower install angular-local-storage [--save | --save-dev]
<!-- bower --> <script src="www/lib/angular-local-storage/dist/angular-local-storage.min.js"></ script>
angular.module('starter', ['ionic', 'LocalStorageModule']);
Si el paquete viene con un provider para su configuración, lo configuramos en el core/config.js.
Para ello, añadiremos una función declarada en el .config() del módulo general.
angular.module('starter')
.config(configLocalStorage)
function configLocalStorage(localStorageServiceProvider) {
localStorageServiceProvider.setPrefix('starter');
}
Inyectamos la dependencia en los controladores/factorías que harán uso de dicho paquete.
Hacemos uso de las variables o funciones que nos aporta el módulo.
function SettingsController(localStorageService) {
var language = localStorageService.get('language');
}
<ion-nav-bar>: Es la barra de navegación donde se mostrará el título de nuestra vista. Sustituirá el header.
<ion-nav-view>: Es la directiva encargada de renderizar los templates del estado actual.
<ion-tabs>: Es la directiva que se encargará de agrupar las pestañas.
<ion-tab>: Si dicha pestaña está activa, creará un content según su contenido y gestionará su propio histórico.
<ion-nav-view name="nombre">: Al haber más de una directiva al mismo nivel y cada uno existe en su propia pestaña, hay que darles un nombre para evitar conflictos en el router.
<ion-nav-bar class="bar-positive" title="My App"></ion-nav-bar>
<ion-nav-view></ion-nav-view>
<ion-tabs class="tabs-positive">
<ion-tab href="list" title="Lista">
<ion-nav-view name="list"></ion-nav-view>
</ion-tab>
<ion-tab href="settings" title="Configuración">
<ion-nav-view name="settings"></ion-nav-view>
</ion-tab>
</ion-tabs>
.config(routesConfig)
function routesConfig($stateProvider, $urlRouterProvider) {
$stateProvider.state('list', {
url: '/list',
views: {
'list': {
templateUrl: '/js/list/list.html',
controller: 'ListController as vm'
}
}
})
$stateProvider.state('settings', {
url: '/settings',
views: {
'settings': {
templateUrl: '/js/settings/settings.html',
controller: 'SettingsController as vm'
}
}
});
}