Demo showing how to wire up side menus along with navigation within Ionic.
Created
July 20, 2014 13:53
-
-
Save anonymous/f4e1d766ea77ba1b92be to your computer and use it in GitHub Desktop.
A Pen by Ionic.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <html ng-app="ionicApp"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> | |
| <title>Side Menus</title> | |
| <link href="http://code.ionicframework.com/1.0.0-beta.9/css/ionic.css" rel="stylesheet"> | |
| <script src="http://code.ionicframework.com/1.0.0-beta.9/js/ionic.bundle.js"></script> | |
| </head> | |
| <body> | |
| <div ng-controller="MainCtrl"> | |
| <ion-nav-view></ion-nav-view> | |
| </div> | |
| <script id="event-menu.html" type="text/ng-template"> | |
| <ion-side-menus> | |
| <ion-side-menu-content> | |
| <ion-nav-bar class="bar-positive"> | |
| <ion-nav-back-button class="button-icon ion-arrow-left-c"> | |
| </ion-nav-back-button> | |
| </ion-nav-bar> | |
| <ion-nav-buttons side="left"> | |
| <button class="button button-icon button-clear ion-navicon" ng-click="toggleLeft()"> | |
| </button> | |
| </ion-nav-buttons> | |
| <ion-nav-view animation="no-animation" name="menuContent"></ion-nav-view> | |
| </ion-side-menu-content> | |
| <ion-side-menu side="left"> | |
| <ion-header-bar class="bar-assertive"> | |
| <h1 class="title">Left Menu</h1> | |
| </ion-header-bar> | |
| <ion-content> | |
| <ul class="list"> | |
| <a href="#/event/check-in" class="item" menu-close>Check-in</a> | |
| <a href="#/event/attendees" class="item" menu-close>Attendees</a> | |
| </ul> | |
| </ion-content> | |
| </ion-side-menu> | |
| </ion-side-menus> | |
| </script> | |
| <script id="home.html" type="text/ng-template"> | |
| <ion-view title="Welcome"> | |
| <ion-content padding="true"> | |
| <p>Swipe to the right to reveal the left menu.</p> | |
| <p>(On desktop click and drag from left to right)</p> | |
| </ion-content> | |
| </ion-view> | |
| </script> | |
| <script id="check-in.html" type="text/ng-template"> | |
| <ion-view title="Event Check-in"> | |
| <ion-content> | |
| <form class="list" ng-show="showForm"> | |
| <div class="item item-divider"> | |
| Attendee Info | |
| </div> | |
| <label class="item item-input"> | |
| <input type="text" placeholder="First Name" ng-model="attendee.firstname"> | |
| </label> | |
| <label class="item item-input"> | |
| <input type="text" placeholder="Last Name" ng-model="attendee.lastname"> | |
| </label> | |
| <div class="item item-divider"> | |
| Shirt Size | |
| </div> | |
| <ion-radio ng-repeat="shirtSize in shirtSizes" | |
| ng-value="shirtSize.value" | |
| ng-model="attendee.shirtSize"> | |
| {{ shirtSize.text }} | |
| </ion-radio> | |
| <div class="item item-divider"> | |
| Lunch | |
| </div> | |
| <ion-toggle ng-model="attendee.vegetarian"> | |
| Vegetarian | |
| </ion-toggle> | |
| <div class="padding"> | |
| <button class="button button-block" ng-click="submit()">Checkin</button> | |
| </div> | |
| </form> | |
| <div ng-hide="showForm"> | |
| <pre ng-bind="attendee | json"></pre> | |
| <a href="#/event/attendees">View attendees</a> | |
| </div> | |
| </ion-content> | |
| </ion-view> | |
| </script> | |
| <script id="attendees.html" type="text/ng-template"> | |
| <ion-view title="Event Attendees" left-buttons="leftButtons"> | |
| <ion-content> | |
| <div class="list"> | |
| <ion-toggle ng-repeat="attendee in attendees | orderBy:'firstname' | orderBy:'lastname'" | |
| ng-model="attendee.arrived" | |
| ng-change="arrivedChange(attendee)"> | |
| {{ attendee.firstname }} | |
| {{ attendee.lastname }} | |
| </ion-toggle> | |
| <div class="item item-divider"> | |
| Activity | |
| </div> | |
| <div class="item" ng-repeat="msg in activity"> | |
| {{ msg }} | |
| </div> | |
| </div> | |
| </ion-content> | |
| </ion-view> | |
| </script> | |
| </body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| angular.module('ionicApp', ['ionic']) | |
| .config(function($stateProvider, $urlRouterProvider) { | |
| $stateProvider | |
| .state('eventmenu', { | |
| url: "/event", | |
| abstract: true, | |
| templateUrl: "event-menu.html" | |
| }) | |
| .state('eventmenu.home', { | |
| url: "/home", | |
| views: { | |
| 'menuContent' :{ | |
| templateUrl: "home.html" | |
| } | |
| } | |
| }) | |
| .state('eventmenu.checkin', { | |
| url: "/check-in", | |
| views: { | |
| 'menuContent' :{ | |
| templateUrl: "check-in.html", | |
| controller: "CheckinCtrl" | |
| } | |
| } | |
| }) | |
| .state('eventmenu.attendees', { | |
| url: "/attendees", | |
| views: { | |
| 'menuContent' :{ | |
| templateUrl: "attendees.html", | |
| controller: "AttendeesCtrl" | |
| } | |
| } | |
| }) | |
| $urlRouterProvider.otherwise("/event/home"); | |
| }) | |
| .controller('MainCtrl', function($scope, $ionicSideMenuDelegate) { | |
| $scope.attendees = [ | |
| { firstname: 'Nicolas', lastname: 'Cage' }, | |
| { firstname: 'Jean-Claude', lastname: 'Van Damme' }, | |
| { firstname: 'Keanu', lastname: 'Reeves' }, | |
| { firstname: 'Steven', lastname: 'Seagal' } | |
| ]; | |
| $scope.toggleLeft = function() { | |
| $ionicSideMenuDelegate.toggleLeft(); | |
| }; | |
| }) | |
| .controller('CheckinCtrl', function($scope) { | |
| $scope.showForm = true; | |
| $scope.shirtSizes = [ | |
| { text: 'Large', value: 'L' }, | |
| { text: 'Medium', value: 'M' }, | |
| { text: 'Small', value: 'S' } | |
| ]; | |
| $scope.attendee = {}; | |
| $scope.submit = function() { | |
| if(!$scope.attendee.firstname) { | |
| alert('Info required'); | |
| return; | |
| } | |
| $scope.showForm = false; | |
| $scope.attendees.push($scope.attendee); | |
| }; | |
| }) | |
| .controller('AttendeesCtrl', function($scope) { | |
| $scope.activity = []; | |
| $scope.arrivedChange = function(attendee) { | |
| var msg = attendee.firstname + ' ' + attendee.lastname; | |
| msg += (!attendee.arrived ? ' has arrived, ' : ' just left, '); | |
| msg += new Date().getMilliseconds(); | |
| $scope.activity.push(msg); | |
| if($scope.activity.length > 3) { | |
| $scope.activity.splice(0, 1); | |
| } | |
| }; | |
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| body { | |
| cursor: url('http://ionicframework.com/img/finger.png'), auto; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment