Index
A
- ajax-button directive
- onClick / Creating the AJAX button directive
- submitting / Creating the AJAX button directive
- AJAX button directive
- creating / Creating the AJAX button directive
- Angular
- ng-valid / The AngularJS model state
- ng-invalid / The AngularJS model state
- ng-pristine / The AngularJS model state
- ng-dirty / The AngularJS model state
- ng-untouched / The AngularJS model state
- ng-touched / The AngularJS model state
- ng-invalid-<errorkey> / The AngularJS model state
- ng-valid-<errorkey> / The AngularJS model state
- Angular $compile service / Angular $compile service
- angular-dynamic-locale
- used, for locale change / Locale changes using angular-dynamic-locale
- angular-media-player.js
- URL, for downloading / Implementing audio support
- angular-media-player directive
- angular-seed / Seed projects
- angular-translate
- used, for text translations / Using angular-translate for text translations
- URL / Using angular-translate for text translations
- angular-ui
- angular-ui package
- Angular documentation
- URL / Resources
- Angular generator
- URL / Yeoman
- Angular I18n support
- about / Angular I18n support
- locale change, angular-dynamic-locale used / Locale changes using angular-dynamic-locale
- angular-translate, used for text translations / Using angular-translate for text translations
- AngularJS
- URL / Resources
- $routeParams service / AngularJS $routeParams
- dynamically generated form elements / Dynamically generated inputs and forms
- and server interactions / AngularJS and server interactions
- $http / AngularJS and server interactions
- $resource / AngularJS and server interactions
- request transformer / AngularJS request/response transformers
- response transformer / AngularJS request/response transformers
- adopting / AngularJS jQuery integration
- AngularJS-local-storage
- AngularJS animation
- URL, for blog post / AngularJS JavaScript animation
- AngularJS bindings / AngularJS bindings
- AngularJS components
- filters, unit testing / Unit testing filters
- unit testing, ngMock module used / Unit testing using the ngMock module
- controllers, unit testing / Unit testing controllers
- WorkoutController, unit testing / Unit testing WorkoutController
- services, unit testing / Unit testing services
- directives, unit testing / Unit testing directives
- routes, unit testing / Unit testing routes and resolve
- resolve, unit testing / Unit testing routes and resolve
- AngularJS CSS animation
- about / AngularJS CSS animation
- AngularJS documentation
- URL / Expressions
- limitations / Expressions
- differences / Expressions
- AngularJS eventing
- about / AngularJS eventing
- history tracking, enriching with / Enriching history tracking with AngularJS eventing
- AngularJS filter
- AngularJS filters
- defining / Understanding AngularJS filters
- AngularJS forms
- about / AngularJS forms
- constructs / AngularJS form constructs
- form directive / AngularJS form constructs
- ng-model directive / AngularJS form constructs, The ng-model directive, ng-model – beyond data binding
- model updates, controlling with ng-model-options directive / Controlling model updates with ng-model-options (Angular 1.3)
- NgModelController, defining / Understanding NgModelController
- decimal, implementing to integer formatter / Implementing a decimal-to-integer formatter and parser
- decimal, implementing to parser / Implementing a decimal-to-integer formatter and parser
- AngularJS validation / AngularJS validation
- AngularJS model state / The AngularJS model state
- workout builder validation / Workout builder validation, How validation works (pre-Angular 1.3)
- custom validation, for exercise count / Custom validation for an exercise count
- workout, saving / Saving the workout
- AngularJS Google+ Channel
- URL / Resources
- AngularJS JavaScript animation / AngularJS JavaScript animation
- AngularJS jQuery integration
- about / AngularJS jQuery integration
- Carousel jQuery plugin, integrating in Workout Runner / Integrating the Carousel jQuery plugin with Workout Runner
- jQuery events, tunnelling with directive / Tunneling jQuery events with directives
- AngularJS model controller
- formatter / Understanding NgModelController
- parser / Understanding NgModelController
- AngularJS model state
- about / The AngularJS model state
- $pristine / The AngularJS model state
- $dirty / The AngularJS model state
- $touched / The AngularJS model state
- $untouched / The AngularJS model state
- $valid / The AngularJS model state
- AngularJS Promise API
- used, for exercise transitions / Using the AngularJS Promise API for exercise transitions
- promises / The basics of promises
- AngularJS services
- creating / Creating AngularJS services
- AngularJS services primer
- about / AngularJS services primer
- AngularJS testing ecosystem / The AngularJS testing ecosystem
- AngularJS transformers
- AngularJS validation / AngularJS validation
- Angular scopes
- revisiting / Revisiting Angular scopes
- Angular services
- used, for tracking workout history / Workout history tracking using Angular services
- Angular solution
- options / AngularJS jQuery integration
- AngularUI
- animate.css
- animation
- adding, to 7 Minute Workout / Adding animation to 7 Minute Workout
- animation effect, mechanisms
- transition / AngularJS CSS animation
- animation / AngularJS CSS animation
- animations, with AngularJS
- about / Animations with AngularJS
- AngularJS CSS animation / AngularJS CSS animation
- AngularJS JavaScript animation / AngularJS JavaScript animation
- animation, adding to 7 Minute Workout / Adding animation to 7 Minute Workout
- API key
- passing, interceptor used / Using an interceptor to pass the API key
- app
- building / Building a new app
- seed projects / Seed projects
- Yeoman / Yeoman
- App bootstrapping
- about / App bootstrapping
- app code, organizing
- File per component / Organizing the JavaScript code
- Folder per component / Organizing the JavaScript code
- Folder per feature / Organizing the JavaScript code
- app controller
- about / The app controller
- DI / Dependency injection
- implementations / Controller implementations
- implementations, verifying / Verifying the implementation
- exercise transitions, implementing / Implementing exercise transitions
- $watch used, for watching model changes / Using $watch to watch the models changes
- AngularJS Promise API used, for exercise transitions / Using the AngularJS Promise API for exercise transitions
- app model
- about / The app model
- features / The app model
- app modules
- adding / Adding app modules
- App view
- about / The app view
- interpolation / Interpolation
- directives / Directives
- expressions / Expressions
- AngularJS bindings / AngularJS bindings
- args parameter / The 7 Minute Workout model
- audio
- exercise progress, tracking with / Tracking exercise progress with audio clips
- stopping, on pause / Stopping audio on pause
- audio support
- implementing, for exercise / Implementing audio support
- audio synchronization issue
- authentication
- handling / Handling authentication and authorization
- cookie-based authentication / Cookie-based authentication
- token-based authentication / Token-based authentication
- authorization
- handling / Handling authentication and authorization, Handling authorization
- support, adding / Adding authorization support
- authorization support
- adding / Adding authorization support
- user authentication context, sharing / Sharing user authentication context
- routes, restricting / Restricting routes
- content, rendering / Conditionally rendering content based on roles
- automation
- need for / The need for automation
B
- $broadcast function / AngularJS eventing
- <body> tag / App bootstrapping
- Batarang
- about / Scope, Tools, Using Batarang to measure performance
- using / Scope, Using Batarang to measure performance
- URL / Tools
- bindonce
- Bootstrap progress bar
- URL / Using ng-style with the Bootstrap progress bar
- ng-style, used with / Using ng-style with the Bootstrap progress bar
- Bower
- script dependencies, managing with / Managing script dependencies with Bower
- about / Managing script dependencies with Bower
- Browser Developer Console
- about / Tools
- browser storage
- workout history, persisting in / Persisting workout history in browser storage
- busy-indicator
C
- callback functions
- arguments / $http service basics
- codebase download / Downloading the codebase
- code organization
- about / Code organization
- JavaScript code, organizing / Organizing the JavaScript code
- communication pattern
- compile function
- element / Exploring the ng-click directive
- attr / Exploring the ng-click directive
- config phase / The config/run phase and module initialization
- constant services
- services, creating with / Creating services with the constant and value services
- controller
- about / The basics of Model View Controller, The controller
- revisiting / Revisiting the controller
- refactoring / Refactoring the video panel and controller
- WorkoutHistoryTracker service, integrating with / Integrating the WorkoutHistoryTracker service with a controller
- controller dependencies
- setting up / Setting up controller dependencies
- $scope / Setting up controller dependencies
- $interval / Setting up controller dependencies
- $location / Setting up controller dependencies
- WorkoutHistoryTracker / Setting up controller dependencies
- appEvents / Setting up controller dependencies
- WorkoutService / Setting up controller dependencies
- $routeParams / Setting up controller dependencies
- Exercise / Setting up controller dependencies
- controller implementations
- about / Controller implementations
- exercise duration tracking, $interval service used / Tracking the duration of an exercise using the $interval service
- verifying / Verifying the implementation
- controllers
- about / Organizing the JavaScript code
- unit testing / Unit testing controllers
- dependencies, setting up / Setting up controller dependencies
- cookie-based authentication / Cookie-based authentication
- cross-domain access / Cross-domain access and AngularJS
- cross-domain requests
- creating, JSONP used / Using JSONP to make cross-domain requests
- Cross-origin resource sharing (CORS) / Cross-origin resource sharing
- cross-origin resource sharing (CORS) / Cookie-based authentication
- cross-site request forgery (CSRF) / Cookie-based authentication
- cross-site scripting (XSS)
- about / Formatting the exercise steps
- CRUD
- CRUD, on exercises/workouts
- performing / Performing CRUD on exercises/workouts
- workout, fixing / Fixing and creating a new workout
- workout, creating / Fixing and creating a new workout
- cross-domain access / Cross-domain access and AngularJS
- AngularJS / Cross-domain access and AngularJS
- JSONP used, for creating cross-domain requests / Using JSONP to make cross-domain requests
- Cross-origin resource sharing (CORS) / Cross-origin resource sharing
- CSS class
- manipulating, ng-class directive used / CSS class manipulation using ng-class
- custom promises
- creating / Creating and resolving custom promises
- resolving / Creating and resolving custom promises
- $q.when function / The $q "when" function
D
- data
- servers / Caching remote data wherever appropriate
- browsers / Caching remote data wherever appropriate
- data, of exercise step
- ng-bind-html directive, using with / Using ng-bind-html with data of the exercise steps
- data, of exercise steps
- ng-bind-html directive, using with / Using ng-bind-html with data of the exercise steps
- database
- seeding / Seeding the database
- data binding, AngularJS
- data sharing pattern
- dependency annotations
- about / Dependency annotations
- $inject annotation / Dependency annotations
- inline annotation / Dependency annotations
- dependency injection (DI) / App bootstrapping, Adding app modules
- Dependency Injection 101 / Dependency Injection 101
- description panel
- adding / Adding descriptions and video panels
- development server
- setting up / Setting up a development server
- DI
- about / Dependency injection
- Dependency Injection 101 / Dependency Injection 101
- in Angular / Dependency injection in Angular
- DI, in Angular
- minification, handling / Handling minification
- dependency annotations / Dependency annotations
- digest cycle
- directive
- life cycle / Life cycle of a directive
- directive-isolated scopes
- defining / Understanding directive-isolated scopes
- AJAX button directive, creating / Creating the AJAX button directive
- directive compile function
- HTML, injecting / Injecting HTML in the directive compile function
- directive configuration object / Anatomy of a directive
- directive controller function / Directive controller function
- directives
- about / The app view, Directives, Organizing the JavaScript code, Directives – an introduction
- ng-model / Directives
- ng-click / Directives
- ng-show / Directives
- ng-controller / Directives
- families / Directives – an introduction
- anatomy / Anatomy of a directive
- workout-tile directive, creating / Creating a workout-tile directive
- ng-click directive, exploring / Exploring the ng-click directive
- guidelines / Tunneling jQuery events with directives
- unit testing / Unit testing directives
- remote-validator, testing / Testing remote-validator
- remote-validator and busy-indicator, testing / Testing remote-validator and busy-indicator together
- testing, with templateUrl / Testing directives with templateUrl
- directives, applying
- attribute / Creating a workout-tile directive
- element / Creating a workout-tile directive
- class / Creating a workout-tile directive
- comment / Creating a workout-tile directive
- directive templates / Understanding directive templates and transclude
- dirty checking
- document databases
- about / Setting up the persistence store
- Do it yourself (DIY) assignment / Loading exercise and workout data
- domain-specific language (DSL)
- dynamically generated form elements
- exercise duration, validating with ng-form / Validating exercise duration with ng-form
E
- $emit function / AngularJS eventing
- $evalAsync loop method / AngularJS dirty checking and digest cycles
- E2E testing
- about / Getting started with E2E testing, More E2E tests
- Protractor / Introduction to Protractor
- Protractor, setting up for / Setting up Protractor for E2E testing
- E2E tests, writing for app / Writing E2E tests for the app
- backend data, setting up for / Setting up backend data for E2E testing
- Workout Runner, testing / Testing Workout Runner
- managing, page objects used / Page objects to manage E2E testing
- end-to-end testing / Types of testing
- events
- using / Using events
- exercise and workout data
- loading / Loading exercise and workout data
- server data, mapping to application models / Mapping server data to application models
- promise chaining / Understanding promise chaining
- loading, from server / Loading exercise and workout data from the server
- detail pages, fixing / Fixing workout and exercise detail pages, Fixing workout and exercise detail pages continued…
- custom promises, creating / Creating and resolving custom promises
- custom promises, resolving / Creating and resolving custom promises
- exercise and workout lists
- loading, from server / Loading exercise and workout lists from a server
- WorkoutService provider, implementing / Implementing the WorkoutService provider
- Exercise CRUD
- with $resource / Exercising CRUD with $resource
- exercise data
- accessing, $resource used / Using $resource to access exercise data
- exercise duration
- tracking, $interval service used / Tracking the duration of an exercise using the $interval service
- exercise indicator
- adding, ng-if directive used / Adding the next exercise indicator using ng-if
- exercise list
- implementing / Implementing the workout and exercise list
- exercise list controller
- exercise list view
- about / Exercise and workout list views
- exercise progress
- tracking, with audio / Tracking exercise progress with audio clips
- exercises
- pausing / Pausing exercises
- pausing, keyboard used / Using the keyboard to pause/resume exercises
- resuming, keyboard used / Using the keyboard to pause/resume exercises
- adding, exercise nav used / Adding exercises using exercise nav
- exercises.js
- exercise step formatting
- exercise steps formatting
- exercise transitions
- implementing / Implementing exercise transitions
- expressions / Expressions
F
- factory service
- services, creating with / Creating services with a factory service
- filter object, expressions
- strings / The filter object of AngularJS filters
- objects / The filter object of AngularJS filters
- function(value) / The filter object of AngularJS filters
- function(actual, expected) / The filter object of AngularJS filters
- true / The filter object of AngularJS filters
- false|undefined / The filter object of AngularJS filters
- filters
- about / Organizing the JavaScript code, Understanding AngularJS filters
- used, for displaying remaining workout time / Displaying the remaining workout time using filters
- date / Understanding AngularJS filters
- uppercase / Understanding AngularJS filters
- lowercase / Understanding AngularJS filters
- number / Understanding AngularJS filters
- filter / Understanding AngularJS filters
- unit testing / Unit testing filters
- form
- resetting / Resetting the form
- formatter / Understanding NgModelController
- FormController API
- about / The FormController API
- $addControl(modelController) / The FormController API
- $removeControl(modelController) / The FormController API
- $setValidity(validationKey, status, childController) / The FormController API
- $setDirty() / The FormController API
- $setPristine() / The FormController API
- $setUntouched() / The FormController API
G
- Git
- GitHub
- URL / Downloading the codebase
- globalization
- glyphs, Bootstrap site
- Guess the number!
- building / Building Guess the Number!
H
- $httpBackend service
- $http service
- about / $http service basics
- Hello Angular app
- history tracking
- enriching, with AngularJS eventing / Enriching history tracking with AngularJS eventing
- HTML
- injecting, in directive compile function / Injecting HTML in the directive compile function
- http-server module
- HTTP cache headers / Caching remote data wherever appropriate
- HTTP request/response
- mocking, with $httpBackend / Mocking HTTP request/response with $httpBackend
- Human Resource (HR) / Token-based authentication
I
- $inject annotation / Dependency annotations
- $interval implementation
- IDE extensions
- image path binding
- with ng-src / Image path binding with ng-src
- InfoQ article
- URL / RESTful API services
- initializeGame function / The controller
- inject
- about / Unit testing filters
- inline annotation / Dependency annotations
- inter-directive communication
- about / Directive controller function, Inter-directive communication – integrating busy-indicator and remote-validator, Inter-directive communication
- remote-validator (Angular 1.3 or older), fixing / Fixing remote-validator – pre-Angular 1.3
- remote-validator (Angular 1.3), fixing / Fixing remote-validator (Angular 1.3)
- interceptor
- used, for passing API key / Using an interceptor to pass the API key
- Internet Explorer (IE) / Creating a workout-tile directive
- interpolation / Interpolation
- invalid route
- resolving / Resolving routes not found!
- Ionic Framework
- isolated scopes
J
- Jasmine Spies
- used, for verifying dependencies / Using Jasmine spies to verify dependencies
- JavaScript-based animation, jQuery
- JavaScript code
- organizing / Organizing the JavaScript code
- JetBrain WebStorm 8
- URL / Tools
- jQuery plugin
- jsFiddle
- jsFiddle link
- URL / Exploring $watch
- jsFiddle web page
- URL / $http service basics
- jsPerf
- URL / AngularJS eventing
K
- Karma
- setting up, for unit testing / Setting up Karma for unit testing
- URL / Setting up Karma for unit testing
- unit tests, debugging / Debugging unit tests in Karma
- keyboard
- used, for pausing exercises / Using the keyboard to pause/resume exercises
- used, for resuming exercises / Using the keyboard to pause/resume exercises
- keyboard events
- references, for capturing / Using the keyboard to pause/resume exercises
L
- $location
- used, for view navigation in controller / View navigation in the controller using $location
- $location service
- URL / View navigation in the controller using $location
- working with / Working with the $location service
- lazy loading modules
- about / Lazy-loading modules
- ocLazyLoad / Lazy-loading modules
- angularAMD / Lazy-loading modules
- left nav
- building / Building left nav
- left navigation
- and top navigation, integrating / Integrating left and top navigation
- link function / The link function
M
- $modal.open function, arguments
- templateUrl / Integrating the ui.bootstrap modal dialog
- controller / Integrating the ui.bootstrap modal dialog
- scope / Integrating the ui.bootstrap modal dialog
- resolve / Integrating the ui.bootstrap modal dialog
- size / Integrating the ui.bootstrap modal dialog
- 7 Minute Workout
- about / What is 7 Minute Workout?
- URL / What is 7 Minute Workout?
- codebase download / Downloading the codebase
- animation, adding to / Adding animation to 7 Minute Workout
- 7 Minute Workout app
- requirements / The 7 Minute Workout model
- fixing / Fixing the 7 Minute Workout app
- 7 Minute Workout model
- about / The 7 Minute Workout model
- 7 Minute Workout routes
- defining / Defining 7 Minute Workout routes
- 7 Minute Workout view
- about / The 7 Minute Workout view
- image path binding, with ng-src / Image path binding with ng-src
- ng-style used, with Bootstrap progress bar / Using ng-style with the Bootstrap progress bar
- MDN documentation, transition
- references / AngularJS CSS animation
- media-player directive
- minification
- about / Handling minification
- handling / Handling minification
- mock
- model
- model data
- and server data, differences / Mapping server data to application models
- model update, on blur
- about / Model update on blur
- remote validation, performing / Using priority to affect the order of execution of the compile and link functions
- directive, life cycle / Life cycle of a directive
- priority directive, on single element / The priority and multiple directives on a single element
- multiple directive, on single element / The priority and multiple directives on a single element
- model updates
- controlling, with ng-model-options (Angular 1.3) / Controlling model updates with ng-model-options (Angular 1.3)
- module
- about / The app view, Unit testing filters
- module initialization / The config/run phase and module initialization
- MongoDB
- MongoLab
- mouse events
- used, for pausing overlays / Pausing/resuming overlays using mouse events
- used, for resuming overlays / Pausing/resuming overlays using mouse events
- Multi-Lingual app
- building / Building multilingual apps (internationalization)
- Angular I18n support / Angular I18n support
- multiple SPAs
- creating / Breaking applications into multiple SPAs
- MVC
N
- NaN (not a number)
- navigation pattern
- newCollection parameter / Exploring $watch
- next up exercise audio synchronization issue
- ng-annotate
- URL / Dependency annotations
- ng-bind-html directive
- about / Understanding ng-bind-html
- using, with data of exercise step / Using ng-bind-html with data of the exercise steps
- using, with data of exercise steps / Using ng-bind-html with data of the exercise steps
- ng-boilerplate / Seed projects
- ng-class directive
- about / CSS class manipulation using ng-class
- used, for manipulating CSS class / CSS class manipulation using ng-class
- ng-click directive
- exploring / Exploring the ng-click directive
- ng-controller
- URL / App bootstrapping
- ng-enter-active directive / AngularJS CSS animation
- ng-enter directive / AngularJS CSS animation
- ng-grid
- ng-if directive
- used, for adding exercise indicator / Adding the next exercise indicator using ng-if
- ng-include directive
- working with / Working with ng-include
- remote file location / Working with ng-include
- embedded scripts / Working with ng-include
- ng-leave-active directive / AngularJS CSS animation
- ng-leave directive / AngularJS CSS animation
- ng-messages
- validation error messages, managing with / Managing validation error messages with ng-messages (Angular 1.3)
- ng-model directive
- input / AngularJS form constructs
- textarea / AngularJS form constructs
- select / AngularJS form constructs
- about / The ng-model directive
- used, with input / Using ng-model with input and textarea
- used, with textarea / Using ng-model with input and textarea
- used, with select / Using ng-model with select
- ng-move-active directive / AngularJS CSS animation
- ng-move directive / AngularJS CSS animation
- ng-options directive
- formats / Using ng-model with select
- about / Using ng-model with select
- ng-repeat directive
- working with / Working with ng-repeat, Handling large datasets with ng-repeat
- variables in expression / Working with ng-repeat
- (key,value) in expression / Working with ng-repeat
- variable in expression track by tracking_expression / Working with ng-repeat
- used, for filtering workout history / Filtering and ordering using ng-repeat
- ng-repeat directive, properties
- $index / Special ng-repeat properties
- $first / Special ng-repeat properties
- $middle / Special ng-repeat properties
- $last / Special ng-repeat properties
- $even / Special ng-repeat properties
- $odd / Special ng-repeat properties
- ng-src
- image path binding, used with / Image path binding with ng-src
- used, with Bootstrap progress bar / Using ng-style with the Bootstrap progress bar
- ng-style directive
- ng-view
- used, for SPAs / View layouts for SPAs using ng-view
- ngAnimate module
- ngMock module
- used, for unit testing / Unit testing using the ngMock module
- NgModelController
- defining / Understanding NgModelController
- Node
- Node.js
- Node.js ecosystem / The AngularJS testing ecosystem
- Node Package Manager (NPM) / Setting up Karma for unit testing
- non-RESTful endpoints
- $resource service, used with / The $resource service with non-RESTful endpoints
- normalization
- notable modules/libraries
- angular-http-auth / Token-based authentication
- ng-token-auth / Token-based authentication
O
- oldCollection parameter / Exploring $watch
- orderBy filter
- about / The AngularJS orderBy filter
- orderBy filter, expression parameter
- strings / The AngularJS orderBy filter
- function(element) / The AngularJS orderBy filter
- arrays / The AngularJS orderBy filter
- overlays
- pausing, mouse events used / Pausing/resuming overlays using mouse events
- resuming, mouse events used / Pausing/resuming overlays using mouse events
- pausing, plain CSS used / Pausing/resuming overlays with plain CSS
- resuming, plain CSS used / Pausing/resuming overlays with plain CSS
P
- $parse service
- $provide service
- page objects
- used, for managing E2E testing / Page objects to manage E2E testing
- parameters, link function
- scope / The link function
- element / The link function
- attr / The link function
- ctrls / The link function
- parser / Understanding NgModelController
- pause
- implementing, in WorkoutController / Implementing pause/resume in WorkoutController
- view fragment, adding for / Adding the view fragment for pausing/resuming
- audio, stopping on / Stopping audio on pause
- performance, AngularJS
- about / Performance
- guidelines / Performance guidelines
- performance guidelines
- page/view, maintaining / Keeping the page/view small
- watches, optimizing for read-once data / Optimizing watches for read-once data
- hiding versus conditional rendering / Hiding (ng-show) versus conditional rendering (ng-if/ng-switch) content
- expression, watching / Expressions being watched should not be slow
- deep model watch, minimizing / Minimizing the deep model watch
- large dataset, handling with ng-repeat / Handling large datasets with ng-repeat
- mouse movement tracking events, avoiding / Avoiding mouse-movement tracking events
- $scope.$apply, avoiding / Avoiding calling $scope.$apply
- lazy loading / Lazy-loading, minification, and creating multiple SPAs
- minification / Lazy-loading, minification, and creating multiple SPAs
- multiple SPAs, creating / Lazy-loading, minification, and creating multiple SPAs
- data, caching / Caching remote data wherever appropriate
- Batarang used, for measuring performance / Using Batarang to measure performance
- persistence store
- setting up / Setting up the persistence store
- database, seeding / Seeding the database
- Personal Trainer app
- about / The Personal Trainer app – the problem scope
- requirements / Personal Trainer requirements
- and server integration / Personal Trainer and server integration
- exercise and workout data, loading / Loading exercise and workout data
- CRUD, performing on exercises/workouts / Performing CRUD on exercises/workouts
- Personal Trainer Layout
- about / The Personal Trainer layout
- navigation pattern, with routes / The Personal Trainer navigation with routes
- Personal Trainer model
- about / The Personal Trainer model
- workout model, sharing / Sharing the workout model
- model, as service / The model as a service
- pipeline architecture
- plain CSS
- used, for resuming overlays / Pausing/resuming overlays with plain CSS
- used, for pausing overlays / Pausing/resuming overlays with plain CSS
- Plunker
- about / Tools
- URL / Understanding ng-bind-html
- prefight request
- preprocessors
- promise API
- then(successCallback, errorCallback, notifyCallback) / The basics of promises
- catch(errorCallback) / The basics of promises
- finally(callback) / The basics of promises
- promise chaining / Understanding promise chaining
- promises / The basics of promises, Route resolutions and promises
- property injection
- about / Dependency Injection 101
- Protractor
- about / Introduction to Protractor
- setting up, for E2E testing / Setting up Protractor for E2E testing
- URL / Setting up Protractor for E2E testing
- element function / Writing E2E tests for the app
- by object / Writing E2E tests for the app
- Protractor setup
- components / Introduction to Protractor
- providers
- provider service
- services, creating with / Creating services with a provider service
Q
- $q.when function / The $q "when" function
- Q
- Quality Assurance (QA) / Testing who and when
R
- $resource
- RESTful API services / RESTful API services
- defining / $resource basics
- actions, defining / Understanding $resource actions
- action invocation / $resource action invocation
- used, for accessing exercise data / Using $resource to access exercise data
- abstraction cost / The hidden cost of hiding asynchronicity
- Exercise CRUD, used with / Exercising CRUD with $resource
- with non-RESTful endpoints / The $resource service with non-RESTful endpoints
- $resource, parameters
- url / $resource basics
- paramDefaults / $resource basics
- actions / $resource basics
- $resource action invocation / $resource action invocation
- $resource actions
- defining / Understanding $resource actions
- $rootScope / Scope
- $routeParams service / AngularJS $routeParams
- $routeProvider dependency
- $route service
- rejected promises
- routing failure, handling for / Handling routing failure for rejected promises
- workouts not found, handling / Handling workouts not found
- remaining workout time
- displaying, filters used / Displaying the remaining workout time using filters
- remote-validator
- fixing / Fixing remote-validator – pre-Angular 1.3
- testing / Testing remote-validator
- and busy-indicator, testing / Testing remote-validator and busy-indicator together
- remote-validator (Angular 1.3)
- remote-validator directive
- about / The remote-validator directive (for v1.3 or less)
- require directive definition / The require directive definition
- link function / The link function
- in Angular 1.3 / The remote-validator directive in Angular 1.3
- remote validation
- remote validation clues directive
- implementing / Implementing a remote validation clues directive
- Angular $compile service / Angular $compile service
- directive controller function / Directive controller function
- busy-indicator and remote-validator, integrating / Inter-directive communication – integrating busy-indicator and remote-validator
- HTML, injecting in directive compile function / Injecting HTML in the directive compile function
- directive templates / Understanding directive templates and transclude
- transclude / Understanding directive templates and transclude
- remote validation directive
- building, for validating workout name / Building a remote validation directive to validate the workout name
- remote-validator directive (for v1.3 or less) / The remote-validator directive (for v1.3 or less)
- remote-validator directive, in Angular 1.3 / The remote-validator directive in Angular 1.3
- Representational State Transfer (REST)
- about / RESTful API services
- request interceptor
- about / Request/response interceptors
- require directive definition / The require directive definition
- resolve object property
- string constant / Route resolving
- function / Route resolving
- resources
- response interceptor
- about / Request/response interceptors
- Restangular
- RESTful API services / RESTful API services
- resume
- implementing, in WorkoutController / Implementing pause/resume in WorkoutController
- view fragment, adding for / Adding the view fragment for pausing/resuming
- route resolutions / Route resolutions and promises
- route resolve / Route resolving
- routes
- navigation pattern, used with / The Personal Trainer navigation with routes
- routing failure
- handling, for rejected promises / Handling routing failure for rejected promises
- run phase / The config/run phase and module initialization
S
- $sanitize service
- $scope
- using / Using $scope
- $rootScope, using / Using $rootScope
- $setValidity function
- saving, of forms
- SCE
- scope
- about / Scope
- scope parameter / Exploring $watch
- script dependencies
- managing, with Bower / Managing script dependencies with Bower
- seconds-to-time filter
- creating / Creating a seconds-to-time filter
- AngularJS filters, defining / Understanding AngularJS filters
- secondsToTime filter, implementing / Implementing the secondsToTime filter
- secondsToTime filter
- implementing / Implementing the secondsToTime filter
- seed projects
- about / Seed projects
- angular-seed / Seed projects
- ng-boilerplate / Seed projects
- server
- exercise and workout lists, loading from / Loading exercise and workout lists from a server
- exercise and workout data, loading from / Loading exercise and workout data from the server
- server data
- mapping, to application models / Mapping server data to application models
- and model data, differences / Mapping server data to application models
- server integration
- and Personal Trainer / Personal Trainer and server integration
- server interactions
- and AngularJS / AngularJS and server interactions
- service
- used, for creating services / Creating services using a service
- service constructs
- services
- about / Organizing the JavaScript code
- benefits / AngularJS services primer
- creating, with constant services / Creating services with the constant and value services
- creating, with value services / Creating services with the constant and value services
- creating, service used / Creating services using a service
- creating, with factory service / Creating services with a factory service
- creating, with provider service / Creating services with a provider service
- unit testing / Unit testing services
- HTTP request/response, mocking with $httpBackend / Mocking HTTP request/response with $httpBackend
- WorkoutService, testing / Testing WorkoutService
- using / Using services
- sibling scopes
- SPAs
- about / Understanding SPAs
- view layouts, used for / View layouts for SPAs using ng-view
- 7 Minute Workout routes, defining / Defining 7 Minute Workout routes
- config phase / The config/run phase and module initialization
- run phase / The config/run phase and module initialization
- module initialization / The config/run phase and module initialization
- view navigation, $location used / View navigation in the controller using $location
- $location service, working / Working with the $location service
- stack overflow (SO) / Keeping the page/view small
- start and finish pages
- adding / Adding start and finish pages
- SPAs / Understanding SPAs
- strict contextual escaping (SCE)
- about / Formatting the exercise steps
- Strict Contextual Escaping (SCE) / Adding descriptions and video panels
- Sublime Text package
- URL / Tools
T
- $timeout implementation
- testing, in AngularJS
- about / Testing in AngularJS
- types / Types of testing
- unit testing / Types of testing
- end-to-end testing / Types of testing
- E2E testing, performing / Testing who and when
- AngularJS testing ecosystem / The AngularJS testing ecosystem
- TextMate bundle
- URL / Tools
- text translations
- fixed string literals / Using angular-translate for text translations
- dynamic string literals / Using angular-translate for text translations
- third-party libraries
- about / Useful third-party libraries
- ui-router / Useful third-party libraries
- AngularUI / Useful third-party libraries
- ng-grid / Useful third-party libraries
- Restangular / Useful third-party libraries
- Ionic Framework / Useful third-party libraries
- token-based authentication / Token-based authentication
- tools
- top navigation
- and left navigation, integrating / Integrating left and top navigation
- transclude / Understanding directive templates and transclude
- transformer functions
- registering / AngularJS request/response transformers
- transitions
- implementing, $watch used / Implementing transitions using $watch
- translations
- $translate service, using / Using angular-translate for text translations
- translate filter, using / Using angular-translate for text translations
- translate directive, using / Using angular-translate for text translations
U
- ui-router
- ui.bootstrap dialog
- ui.bootstrap modal dialog
- integrating / Integrating the ui.bootstrap modal dialog
- UIGrid
- unit testing
- about / Types of testing, Getting started with unit testing
- Karma, setting up for / Setting up Karma for unit testing
- script dependencies, managing with Bower / Managing script dependencies with Bower
- for AngularJS components / Unit testing AngularJS components
- unit tests
- debugging, in Karma / Debugging unit tests in Karma
- unwarranted model update
- fixing / Fixing unwarranted model updates
- URL
- used, for sharing data across pages / Using a URL to share data across pages
- User Experience (UX) / The app view
V
- validation messages
- value services
- services, creating with / Creating services with the constant and value services
- verifyGuess function / The controller
- video panel
- adding / Adding descriptions and video panels
- video playback, pop-up dialog / Video playback in the pop-up dialog
- view
- view fragment
- adding, for pause / Adding the view fragment for pausing/resuming
- adding, for resume / Adding the view fragment for pausing/resuming
W
- $watch
- used, for watching model changes / Using $watch to watch the models changes
- exploring / Exploring $watch
- used, for implementing transitions / Implementing transitions using $watch
- WebDriver
- workout
- implementing / Implementing the workout and exercise list
- building / Building a workout
- left nav, building / Building left nav
- WorkoutBuilderService service, adding / Adding the WorkoutBuilderService service
- exercises adding, exercise nav used / Adding exercises using exercise nav
- WorkoutDetailController, implementing / Implementing WorkoutDetailController
- builder view, implementing / Implementing the workout builder view
- AngularJS forms / AngularJS forms
- saving / Saving the workout
- AngularJS form directive / The AngularJS form directive and form validation
- form validation / The AngularJS form directive and form validation
- Angular scopes, revisiting / Revisiting Angular scopes
- fixing / Fixing and creating a new workout
- creating / Fixing and creating a new workout
- workout-tile directive
- creating / Creating a workout-tile directive
- workout.js
- workout and exercise detail pages
- fixing / Fixing workout and exercise detail pages, Fixing workout and exercise detail pages continued…
- route resolutions / Route resolutions and promises
- promises / Route resolutions and promises
- WorkoutAudioController
- implementing / Implementing WorkoutAudioController
- WorkoutBuilderService service
- workout builder validation
- about / Workout builder validation
- working, for pre-Angular 1.3 / How validation works (pre-Angular 1.3)
- working, for Angular 1.3 / How validation works (Angular 1.3)
- validation error messages, managing with ng-messages / Managing validation error messages with ng-messages (Angular 1.3)
- workout builder view
- implementing / Implementing the workout builder view
- WorkoutController
- pause, implementing in / Implementing pause/resume in WorkoutController
- resume, implementing in / Implementing pause/resume in WorkoutController
- unit testing / Unit testing WorkoutController, Unit testing WorkoutController continued...
- unit tests, debugging in Karma / Debugging unit tests in Karma
- Jasmine Spies, used for verifying dependencies / Using Jasmine spies to verify dependencies
- $interval implementation, testing / Testing the $interval and $timeout implementations
- $timeout implementation, testing / Testing the $interval and $timeout implementations
- workout pause/resume, testing / Testing workout pause/resume
- WorkoutDetailController
- implementing / Implementing WorkoutDetailController, Implementing WorkoutDetailController continued…
- route resolve / Route resolving
- invalid route, resolving / Resolving routes not found!
- workout history
- tracking, Angular services used / Workout history tracking using Angular services
- page, implementing as pop-up dialog / Adding the workout history view
- persisting, in browser storage / Persisting workout history in browser storage
- filtering / Filtering workout history.
- filtering, ng-repeat expression used / Filtering and ordering using ng-repeat
- WorkoutHistoryTracker service
- about / The WorkoutHistoryTracker service
- services / Services and scopes
- scopes / Services and scopes
- implementing / Service implementation continued...
- integrating, with controller / Integrating the WorkoutHistoryTracker service with a controller
- workout history tracking
- implementing / Implementing workout history tracking
- workout list controller
- workout list view
- about / Exercise and workout list views
- workout model
- sharing / Sharing the workout model
- workout pause/resume
- testing / Testing workout pause/resume
- Workout Runner
- testing / Testing Workout Runner
- WorkoutService
- creating, as workout repository / WorkoutService as a workout and exercise repository
- creating, as exercise repository / WorkoutService as a workout and exercise repository
- exercise-related CRUD operations / WorkoutService as a workout and exercise repository
- workout-related CRUD operations / WorkoutService as a workout and exercise repository
- testing / Testing WorkoutService
- WorkoutService provider
- implementing / Implementing the WorkoutService provider
- workout video panel
- enhancing / Enhancing the workout video panel
- refactoring / Refactoring the video panel and controller