INTRODUCTION xxv
CHAPTER 1: BUILDING A SIMPLE ANGULARJS APPLICATION 1
What You Are Building 1
What You Will Learn 3
Step 1: Scaffolding Your Project with Yeoman 4
Step 2: Creating Watchlists 9
Step 3: Configuring Client-Side Routing 19
Step 4: Creating a Navigation Bar 23
Step 5: Adding Stocks 26
Step 6: Integrating with Yahoo Finance 32
Step 7: Creating the Stock Table 36
Step 8: Inline Form Editing 40
Step 9: Formatting Currency 44
Step 10: Animating Price Changes 46
Step 11: Creating the Dashboard 49
Production Deployment 53
CHAPTER 2: INTELLIGENT WORKFLOW AND BUILD TOOLS 57
What Can Tooling Do for Me? 57
What Is Bower? 58
What Is Grunt? 60
What Is Gulp? 73
What Is Yeoman? 84
CHAPTER 3: ARCHITECTURE 95
Why Is Architecture Important? 95
Controllers, Services, and Directives 96
The ModelService Paradigm 102
Exposing API Using Controllers 108
Organizing Your Code with Modules 109
Directory Structure 113
Best Practices for Structuring User Authentication 127
CHAPTER 4: DATA BINDING 131
What Is Data Binding? 131
What Data Binding Can Do for You 134
CHAPTER 5: DIRECTIVES 157
What Is a Directive? 157
A Deeper Understanding of Directives 167
Changing Directive Templates at Runtime 179
CHAPTER 6: TEMPLATES, LOCATION, AND ROUTING 185
Part I: Templates 187
Part II: The $location Service 196
Part III: Routing 200
CHAPTER 7: SERVICES, FACTORIES, AND PROVIDERS 217
A Brief Overview of Dependency Injection 218
Building Your Own Services 221
Common Use Cases for Services 232
Utilizing Built-In Providers 236
CHAPTER 8: SERVER COMMUNICATION 243
Why Will I Learn? 243
Introduction to Promises 244
Services for HTTP Requests 246
Consuming the Twitter REST API 262
Scaffolding a REST API with StrongLoop LoopBack 264
Using Web Sockets with AngularJS 270
Using Firebase with AngularJS 273
CHAPTER 9: TESTING AND DEBUGGING ANGULARJS APPLICATIONS 277
AngularJS Testing Philosophy 277
DOM Integration Tests 292
Debugging AngularJS Apps 309
CHAPTER 10: MOVING ON 315
Using Angular-UI Bootstrap 316
Hybrid Mobile Apps with the Ionic Framework 325
Integrating Open Source JavaScript with AngularJS 331
AngularJS and ECMAScript 6 341
Conclusion 343
APPENDIX: RESOURCES 345
INDEX 347