AngularJS-Learning
A bunch of links to blog posts, articles, videos, etc for learning AngularJS. This list is in its early stages. Feel free to submit a pull request if you have some links/resources to add. Also, I try to verify that the articles below have some real content (i.e. aren’t 2 paragraph blog posts with little information) to ensure I’m not listing “fluff” pieces. If you have an idea for a better way to organize these links, please let me know. As I find similar posts in the “General Topics” section, I will break them out into their own categories.
NOTE: LINKS PRECEDED WITH A ** DISCUSS NEW STUFF IN ANGULAR 1.2.
Table of Contents
Books
Videos
Courses
Help
General Topics
Introductions/Beginning AngularJS
Lessons Learned
Multipart Articles
Sample Apps
Scopes & Compile
Dependency Injection
Directives
Services/Providers
Routing
Promises/Deferred
Forms
Authentication
Collections
Code Organization
Testing
RESTful Stuff
Localization
UI Stuff
Integration with Other Languages/Frameworks
Hosted Backends
Mobile
Popular Third-Party Modules
Test Editor Bundles
Development Tools
Boilerplates
Books
- AngularJS
- Instant AngularJS Starter
- Recipes With AngularJS
- AngularJS In Action
- AngularJS For .Net Developers
- Web Application Development With AngularJS
- Developing An AngularJS Edge
- AngularJS Directives
- ng-book
- Build Your Own AngularJS
- Dependency Injection with AngularJS
- Learning Web Development with Bootstrap and Angular: RAW
- AngularJS Design Patterns
- AngularJS Web application development Blueprints : RAW
- Practical AngularJS
Videos
- Egghead.io — source code
- Video Tutorial: AngularJS Fundamentals in 60-ish Minutes — 1:10:50
- AngularJS YouTube Page — several videos, mostly presentations of 1h or more
- Intro to Angular JS — 50:05
- End to End with Angular JS — 52:59
- Security with Angular JS — 29:45
- Frontend Workflows with Grunt and Angular JS — 1:02:37
- AngularJS Tutorial — 12:19
- Show Me AngularJS (Tekpub) — 8 videos (paid)
- Easier JavaScript Apps with AngularJS (Tuts+) — 22 videos of about 5 minutes each, in 8 sections (paid)
- AngularJS Fundamentals (Pluralsight) – 6 hours 15 minutes total (paid)
- **AngularJS 1.2 & Beyond
- Example Cases of AngularJS – Growing list of 5 minute or less videos
- Realtime Web Apps With AngularJS & Firebase
- Getting MEAN With MongoDB and AngularJS
- A comparison of the two-way binding in AngularJS, EmberJS and KnockoutJS
- Angular Best Practices – 64 videos(paid)
- Neosavvy’s Angular & Jasmine Screencast Series – 16 videos of about 2-3 minutes each
- AngularJS Videos Collection in Youtube — Collection of Videos from Various websites.
- ng-conf YouTube Page — YouTube channel with all the presentations given at the Angular Conference in January 2014.
- Introduction to Angular.js in 50 Examples (part 1)
Courses
- Thinkster.io – A better way to learn AngularJS – Free course on AngularJS
- Interactive AngularJS tutorials
- AngularJS JumpStart with Dan Wahlin
- Tuts+: Hands-on Angular
Help
- StackOverflow
- AngularJS Mailing List (Google Groups)
- Chatroom (Browser-based IRC)
- AngularJS Google+ Community
General Topics
- AngularJS Cheat Sheet
- What stumped me about AngularJS
- 5 reasons to use AngularJS in the corporate app world
- Lazy Loading In AngularJS
- HashKeyCopier – An AngularJS Utility Class For Merging Cached And Live Data
- Exploring Directives, $scope, DOM Rendering, And Timing In AngularJS
- Applying A Cached Response To An AngularJS Resource
- Angularytics: The solution to tracking page views and events in a SPA with AngularJS
- Sharing Data, State and Models on AngularJS: Alternatives, comparison and my solution
- Angular.js and IE8 caching
- AngularJS and SEO
- Templates, Routing and Sharing Data Between Views in an Angular JS Application
- Improving End User Experience with AngularJS
- AngularJS Controller Tutorial With Example
- HTML5 local storage with Angular JS
- Dynamic routes with AngularJS and Silex
- Modeling Data and State in Your AngularJS Application
- Code Reuse in AngularJS
- Dynamically Loading Controllers and Views with AngularJS and RequireJS
- Sorting by Multiple Fields with Different Sort Orders Using the AngularJS orderby Filter
- $http Response Interceptors
- AngularJS: Advanced Design Patterns & Best Practices
- Automatic JSON date parsing with AngularJS
- AngularJS Abstractions: Modules
- Mixing Static Content With ngSwitch And ngSwitchWhen In AngularJS
- Building large apps with AngularJS
- **Error Message Minification with MinErr
- How to make your AngularJS app work in IE 8
- AngularJS Performance Tuning for Long Lists
- Responsive Website Using AngularJS
- Minimizing initialization time in AngularJS
- Kickstart Your AngularJS Development with Yeoman, Grunt and Bower
- **Getting Ready for AngularJS 1.2
- 10 Reasons Web Developers Should Learn AngularJS
- Lazy prefetching of AngularJS partials
- Enhancing AngularJS $log using Decorators
- Logging Client-Side Errors With AngularJS And Stacktrace.js
- Form Autocomplete and Remember Password with AngularJS
- Optimizing AngularJS: 1200ms to 35ms
- Creating A RequireJS Service For AngularJS Applications
- Loading AngularJS Components After Your Application Has Been Bootstrapped
- Load a module on demand with AngularJS
- Environment Specific Configuration in AngularJS Using Grunt
- What’s the Role of the Server in Single Page Applications (SPAs)?
- Making Angular.js realtime with Websockets
- Rich Object Models and Angular.js
- Rich Object Models and Angular: Identity Maps
- Interceptors in AngularJS and Useful Examples
- ‘Resolve’ in AngularJS Routes, Explained as Story
- Get Your Hands Dirty Refactoring in AngularJS
- Angular model objects with JavaScript classes
Introductions/Beginning AngularJS (also look at the multipart articles)
- Getting Started With AngularJS
- Everything you need to understand to start with AngularJS
- What To Know To Be An Expert in AngularJS
- AngularJS for jQuery Developers
- An Introduction to AngularJS
- Building a Web App From Scratch in AngularJS
- AngularJS: An Overview
- AngularJS Tutorial — Build an App Using Directives and Data Binding
- AngularJS In 30 Minutes
- Kickstart Your AngularJS Development with Yeoman, Grunt and Bower
- Filtering with AngularJS
- Ultimate guide to learning AngularJS in one day
- 7 Ways to be Successful with AngularJS
- Creating a Single Page Todo App with Node and Angular
- Learn AngularJS With These 5 Practical Examples
- Considering Speed and Slowness in AngularJS
- Environment Specific Configuration in AngularJS Using Grunt
- Enhancing AngularJS Logging using Decorators
- Picking Up Angular, build a twitter-like application
Lessons Learned
- Lessons Learned: A Year with a Large AngularJS Project
- Some AngularJS Pitfalls
- Things I Wish I Were Told About Angular.js
- I Wish I Knew Then What I Know Now — Life With AngularJS
- How to build a large Angular.js application
- AngularJS tips and tricks for neophytes and the all-around curious developer.
- 4 Smooth AngularJS Application Tips
- AngularJS tips and tricks for neophytes and the all-around curious developer
- Get Your Hands Dirty Refactoring in AngularJS
- 5 AngularJS Antipatterns & Pitfalls
Multipart Articles
- Getting Started with elasticsearch and AngularJS: Part1 – Searching, Part 2: Faceting, Part 3: Visualization
- Maintainable Rich Web Applications with AngularJS: Part 1, Part 2
- Google, Twitter & AngularJS: 1: Google, Twitter, and AngularJS, 2: Let’s Make a Feed Reader, 3: Rendering Feeds, 4: Managing Feeds, 5: Tests, 6: Adding Dependencies, 7: Form Validation, 8: Iterators & Filters, 9: Installation
- Implementing SignalR Stock Ticker using Angular JS: Part 1, Part 2
- AngularJS Best Practices: I’ve Been Doing It Wrong!: Part 1, Part 2, Part 3
- Introduction to AngularJS Part 1, Part 2
- AngularJS In Depth: Part 1, Part 2: Filters
- The 7 steps to becoming and AngularJS expert, Part 2: Scopes, Part 3: Data-binding, Part 4 and 5: Expressions and directives, Part 6: Services
- AngularJS Overview: 1:Getting started with AngularJS, 2:Creating an AngularJS Controller, 3:The AngularJS $scope is not the MVC Model, 4:Using repeating elements in AngularJS, 5:Filtering the data in an AngularJS ngRepeat element, 6:Using the #AngularJS FormController to control form submission, 7:Creating an #AngularJS Directive, 8:Using the DOM in an AngularJS application, 9:To SPA or Not to SPA
- Building a Google Calendar Booking App with MongoDB, ExpressJS, AngularJS, and Node.js Part 1, Part 2
- Creating Extensible Widgets: Part 1: jQuery to AngularJS in 30 seconds, Part 2: AngularJS Directive Controllers
- Build a Sweet Photo Slider with AngularJS Animate: Part 1, Part 2:
- A Practical Guide to AngularJS Directives: Part 1, Part 2
- AngularJS Tutorial by Jakob Jenkov: Introduction, Views & Directives, Events, AJAX, Forms, Custom Directives, Critiques
- Los Techies AngularJS Series: Table of Contents: Parts 1-12,
Part 1, Part 2: The Controller, Part 3: Inheritance, Part 4: Accessing Server Side Resources, Part 5:Pushing Data to the Server, Part 6: Templates, Part 7: Get Ready to Test, Part 8: More Choice When Testing, Part 9: Values and Constants, Part 10: Intermezzo, Part 11: Promises, Part 12: Multi-language Support, Part 13: Services - Creating a Visualization App Using the Google Charts API and AngularJS: Part 1, Part 2, Part 3, Part 4
- AngularJs Bootstrap Components: Part 1 : Building Popover Directive, Part 2 : Building Collapse(Accordion) Directive, Part 3 : Building Tabs Directive
- Building an Angular and Express App: Part 1 , Part 2
- Angular Directives: A Beginner’s Guide Part 1
Sample Apps
- A Shopping Cart Application Built with AngularJS
- Build a feed reader with the Google feed API and AngularJS
- Learning AngularJS by Example – The Customer Manager Application
- Remote Desktop Client with AngularJS and Yeoman
Scopes & Compile
- AngularJS and scope.$apply
- What are the nuances of scope prototypal / prototypical inheritance in AngularJS?
- angularjs.org watch, on pub sub, and you.
- Use Ng-bind in AngularJS
- Unbinding $watch() Listeners In AngularJS
- Accessing $scope On The DOM Using AngularJS
- Directive Link, $observe, And $watch Functions Execute Inside An AngularJS Context
- Hailing All Frequencies – Communicating in AngularJS with the Pub/Sub Design Pattern
- Nested Scopes in AngularJS
- AngularJS: 6 Common Pitfalls Using Scopes
- Scoping AngularJS Directives: Part 1, Part 2
- $watch How the $apply Runs a $digest
- AngularJS: $watch, $digest and $apply
- Removing the Unneeded Watches
- Angular – $compile: How it works, How to use it.
- A Glimpse of Angular.js $scope via Example
- Share state between controllers in AngularJS
- Make Your Own AngularJS, Part 1: Scopes And Digest
- Scope $watch() vs. $watchCollection() In AngularJS
- A Tale of Frankenstein and Binding to Service Values in Angular.js
- AngularJS Scopes: An Introduction
- Angle Brackets, Rifle Scopes
- Mastering the Scope of the Directives in AngularJS
- 5 Guidelines For Avoiding Scope Soup in Angular
- Speeding up AngularJS’s $digest loop
Dependency Injection
- The “Magic” behind AngularJS Dependency Injection
- AngularJS: More on Dependency Injection
- Angularjs Dependency Injection
- Configuring Dependency Injection in AngularJS
- Defining Instantiatable Classes In The AngularJS Dependency Injection Framework
- Deconstructing AngularJS Injector
Directives
- AngularJS directives and the computer science of JavaScript
- AngularJS Directives – Domain-Specific Extensions to HTML
- AngularJS Directives Tutorial
- Commentable: A Polymorphic Nested Comments Directive for AngularJS
- The ngForm directive of AngularJS
- Run a directive after the DOM has finished rendering
- Use Cases of AngularJS Directives
- My Approach To Building AngularJS Directives That Bind To JavaScript Events
- Delegating Nested Directive Behavior To Parent Directive In AngularJS
- Exploring Directive Controllers, Compiling, Linking, And Priority In AngularJS
- Using Controllers In Directives In AngularJS
- Angular.js Directives with JSON arguments
- The Hitchhiker’s Guide to the Directive
- Creating a Simple AngularJS Directive
- Extending HTML With AngularJS Directives
- Building Nested Recursive Directives in Angular
- An all-in-one directive-controller with AngularJS
- Levelling Up With AngularJS: Building a Reusable Click to Edit Directive
- AngularJS Directives That Override Standard HTML Tags
- AngularJS Directive for Mobile Sliders
- Using Namespaces For One-Off Directives In AngularJS
- AngularJS and $compile
- In-depth directives
- AngularJS: Referencing the parent scope in a directive
- Tip: Directives With the Same Name
- Moving Data In An AngularJS Directive
- Building a Custom AngularJS Unique Value Directive
- Creating an AngularJS Directive from one of your existing plugins/scripts
- Angular.js directives – Difference between controller and link
- AngularJS Directives Tutorial
- AngularJS Directive Design Made Easy
- Refactoring to AngularJS Directive
- Use jQuery Plugin With AngularJS the Easy (Lazy) Way
- Defer DOM Tree Binding In AngularJS With Delayed Transclusion
- Understanding AngularJS Directives: Part 1: Ng-repeat and Compile, Part 2: ngView
- Advanced Directives: Combining AngularJS with existing Components
- **Changes In Transclude() Function Availability In AngularJS 1.2
- Leveraging Directives To Reduce $Watch’ers In Angular
- Creating Semantic, Reusable Directives in AngularJS
- Angle Brackets, Synergistic Directives
- Transclusion in Angular
- Designing AngularJS Directives
- How to integrate your UI Widgets with AngularJS
- Writing More Maintainable Angular.js Directives
Services/Providers
- Angular service or factory?
- How to create (singleton) AngularJS services in 4 different ways
- Moving AJAX calls to a custom service in Angular JS
- Consuming Services
- Understanding Service Types
- Understanding angular $http interceptors
- Differences Between Providers In AngularJS
- Angular’s Modules: Factory, Service, Value, oh my!
- Angular Constants, Values, Factories, Services, Providers and Decorators, Oh My!
- AngularJS Service / Factory Tutorial With Example
- Service Providers in AngularJS and Logger Implementation
- Object-oriented AngularJS Services
- Service Providers in AngularJS and Logger Implementation
Routing
- How to defer route definition in an AngularJS web app
- AngularJS State Management with ui-router
- Nested Views, Routing, And Deep Linking With AngularJS
- Angular UI router
- The basics of using ui-router with AngularJS
- **AngularJS Routing Changes
- Cancelling Route Navigation in AngularJS Controllers
- AngularJS Routing And Views Tutorial With Example
- Single Page Apps with AngularJS Routing and Templating
- AngularJS: Timing Multiple $resource Resolves in ngRoute and ui-router
- Advanced routing and resolves
- AngularJS Routing Using UI-Router
- Extending Dynamic View Loading for CRUD actions in AngularJS
Promises/Deferred
- Enhancing Angular Promises: Returning new promise of field or method called from original promise’s result
- AngularJS promise, or dealing with asynchronous requests in AngularJS
- Taking Advantage of Futures in AngularJS
- Using Promises in AngularJS Views
- Using AngularJS Promises
- Show route only after all promises are resolved
- The AngularJs Promise Anti-Pattern That Makes Me Cry
- Promises & Design Patterns in AngularJS
- Canceling $http Requests in AngularJS
Forms
- Form Validation the AngularJS Way
- AngularJS Directive to test the strength of a password
- AngularJS Directive to check that passwords match
- Mixing Static And Dynamic Data In An AngularJS Select Menu
- Angular.js: ng-select and ng-options
- Angular.js: Autocomplete and enabling a form with $watch and blur
- Create AngularJS Directives to Remove Duplicate Code in Forms
- Forced Repaints In Directive Can Cause Accidental Scrolling In AngularJS
- Using ngOptions in AngularJS
- Showing Validation Messages In Bulk While Validating Form Using Angular JS
- A directive to manage file upload in an AngularJS application
- Radio Buttons With AngularJS
- Reference the Current FormController in AngularJS
- Listening for Validation Changes in AngularJS
- What A Select $watch() Teaches Me About ngModel And AngularJS
- On the Bleeding Edge: Advanced AngularJS Form Validation
- Twitter Bootstrap control-group directive for AngularJS
- Preventing Duplicate Requests in AngularJS
- AngularJS Missing Directives: Native Form Resets
- **AngularJS Missing Directives: Focus & Blur
- Angular JS: Validating Form Elements in a Repeat
- Angular JS: Custom Validation via Directives
- Angular JS: Form Validation
- In depth form validation
- Ng-model and custom form validation
- Angular JS Ajax dropdowns, date picker and saving data
- The concepts of AngularJS Forms
- GitHub Like Signup Form With AngularJS and Bootstrap V3
- Submitting AJAX Forms: The AngularJS Way
- Create a Reusable AngularJS Input Form Component
- Form Navigator With Instant Feedback in AngularJS
- AngularJS Form Validation
- Processing Forms in AngularJS
- Object Equivalency and Select Options in AngularJS (“Why Isn’t the Correct Option Selected?”)
- Validation in angular.js ng-repeat
- Handling Checkboxes and Radio Buttons in Angular Forms
- HTML Forms in AngularJS
- Common Problems (And Solutions) When Using Select Elements With Angular.JS
Authentication
- Deal with users authentication in an AngularJS web app
- Authentication in Single Page Applications with Angular.js
- AngularJS — Quick Role-Based Authentication
- Authentication in Single Page Applications
- Authentication with AngularJS
- Cookies vs Tokens. Getting auth right with Angular.JS
- Techniques for authentication in AngularJS applications
Collections (& ngRepeat Stuff)
- Working With Inherited Collections in AngularJS
- Adding An ngRepeat List Delimiter In AngularJS
- Grouping Nested ngRepeat Lists In AngularJS
- Using ngController With ngRepeat In AngularJS
- Rendering DOM Elements With ngRepeat In AngularJS
- Improving ng-repeat Performance with “track by”
Code Organization
- Building Huuuuuge Apps with AngularJS
- Code Organization in Large AngularJS and JavaScript Applications
- Proposed Angular’s WebPage structure
- The right way of coding AngularJS: How to organize a regular WebApp. Basic Example
- AngularJS Modules for Great Justice
- ngDefine: AngularJS & RequireJS
- Modular AngularJS App Design
- Using RequireJS with AngularJS DI
- Structuring AngularJS Code
- Loading AngularJS Components With RequireJS After Application Bootstrap
- Angular App Structuring Guidelines
Testing
- Full-Spectrum Testing with AngularJS and Testacular
- Mocking Promises in Unit Tests
- How To Test An AngularJS Directive
- Unit Testing AngularJS Controllers Using Jasmine
- Unit Testing AngularJS Controller Using QUnit and Sinon
- Testing AngularJS Directives: Handling External Templates
- How To Unit Test An Angular App
- Unit Testing – Directives
- Unit Testing – Services
- Unit Testing – Controllers
- Mocking Server Dependencies in JavaScript and AngularJS
- Advanced Testing and Debugging in AngularJS
- Unit Testing Best Practices in AngularJS
- Decorating your tests in AngularJS
- How to Unit Test Controllers In AngularJS Without Setting Your Hair On Fire
- Testing AngularJS directive templates with Jasmine and Karma
- Unit and End to End Testing in AngularJS
- **Testing AngularJS Apps with Protractor
- Getting started unit-testing Angular
- Mock Unit Testing a AngularJS Local Storage Service with Karma and Jasmine
- AngularJS End to End Testing With Protractor – Easy Set Up With Yeoman, Grunt, Bower
- Unit Testing an AngularJS Directive
- Protractor – Testing Angular and Non Angular Sites
- Test Filters in AngularJS
- Creating an Eclipse UI to run AngularJS e2e tests using Karma
- AngularJS Unit Testing Series
- A Tip for Angular Unit Tests with Promises
- Writing Tests and Stomping Bugs in AngularJS
- Unit Testing Services in AngularJS for Fun and for Profit
- Getting Started With Protractor And Page Objects For AngularJS E2E Testing
RESTful Stuff
- Using RESTful Controllers In An AngularJS Resource
- Restangular: New AngularJS framework to handle Rest API Restful Resources properly and easily
- New features on Restangular: the ultimate Rest API client for Angular
- Using an AngularJS Factory to Interact with a RESTful Service
- Authentication to a RESTful web service in an AngularJS web app
- XHR Interceptor in an AngularJS web app
Localization
- Localizing Your AngularJS Apps
- Internazionalization (i18n) with AngularJS
- AngularJS And i18n
- Easy global i18n angularJS language translations for your Angular app
UI Stuff
- Angular UI suite (including some subprojects)
- Animation in AngularJS
- Enhanced Animation in AngularJS
- A Reusable AngularJS Popup Dialog Service
- Creating A Custom Show / Hide Directive In AngularJS
- Bootstrap Tabs with Angular.js
- Using Response Interceptors to Show and Hide a Loading Widget
- Building a Typeahead Directive with AngularJS
- AngularJS Modal Service
- Cross-Fading Images With AngularJS
- AngularJS and SVG
- AngularJS: Scroll Animations
- Animating with AngularJS
- Drag and Drop File Upload with AngularJS
- **Remastered Animation in AngularJS 1.2
- Angular JS – Scrolling To An Element By Id
- Building an AngularJS Dialog Service
- **Preparing for Animations in Angular 1.2.0
- **Replacing jQuery.slideDown() with ngAnimate in AngularJS 1.2.0
- AngularJS: Blurred image directive
- Create a “load more” widget using AngularJS, Ajax and Bootstrap 3
- ngInfiniteScroll
- jQuery UI Datepicker with AngularJS
- TimeSelector/TimePicker Directive
- Photo Gallery with AngularJS and CSS3
- A Scalable Approach to Page Transitions in AngularJS
- Staggering Animations in AngularJS
- Build a Sweet Photo Slider with AngularJS Animate
- Build a Sweet AngularJS Photo Slider Pt 2 with ngTouch
- Creating a Slide Show Plugin With AngularJS
- Wallop Slider in AngularJS
- Easy Animations For AngularJS With Animate.css
- Conditionally Apply a CSS Class with AngularJS
- Animating AngularJS Apps: ngView
Integration With Other Languages/Frameworks
- AngularJS and TypeScript
- Using AngularJS and D3 to Create a WordCloud Directive
- Using jQuery Event Delegation In AngularJS
- Hooking up ASP.NET SignalR with Angular JS
- Facebook Authentication in Your AngularJS App
- Automating AngularJS with Yeoman, Grunt & Bower
- Writing Reusable AngularJS Components with Bower
- Making Google Maps Components with AngularJS
- Sync Multiple AngularJS Apps Without Server via PouchDB
- Building Offline Applications With AngularJS and PouchDB
- How to integrate AngularJS with Rails 4
- Using Breeze JS with Angular to consume Web API OData
- A better way of using SignalR with Angular JS
- AngularJS Tutorial: Learn to Rapidly Build Real-time Web Apps with Firebase
- Using AngularJS with Django
- Using AngularJS/Bootstrap as frontend and CakePHP as REST API producer
Hosted Backends
- Parse.com boilerplate for building large, complex AngularJS apps
- Realtime database for your Angular app with Firebase
- CRUD backend for Angular with Backlift
- Building Offline Applications With AngularJS and PouchDB
- CRUD backend for Angular with DreamFactory
- Three-Way Data Binding with Firebase and Angular
Mobile
- Quick Start Guide to PhoneGap+AngularJS
- Building PhoneGap Apps with AngularJS
- PhoneGap And AngularJS: In App Browser
- PhoneGap And AngularJS: Notification Service
- Developing a mobile app with Phonegap, AngularJS and ExpressJS Part I
- Sample Mobile Application with AngularJS
- The Definitive Guide to Angular on Mobile
- Ionic Framework with AngularJS app development
Popular Third-Party Modules
Text editor bundles/IDE Stuff
- Sublime text 2 package
- VIM UltiSnip & Snipmate Snippets for AngularJS
- Running JavaScript tests with Karma in WebStorm 7
- Visual Studio
Development Tools
- AngularJS Batarang Chrome Extension
- Scaffolding JSON or restful API to JavaScript and HTML using AngularJS and JQuery