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' } } }); }