- Page 2 and 3: ng-book The Complete Book on Angula
- Page 4 and 5: Contents Introduction . . . . . . .
- Page 6 and 7: CONTENTS Response Object . . . . .
- Page 8 and 9: CONTENTS Configuration Options . .
- Page 10 and 11: CONTENTS SEO with AngularJS . . . .
- Page 12 and 13: CONTENTS i Dedication I dedicate th
- Page 14 and 15: Introduction 2 Acknowledgments Firs
- Page 16 and 17: Introduction 4 Additional Resources
- Page 18 and 19: The Basics of AngularJS The goal of
- Page 20 and 21: The Basics of AngularJS 8 What Is A
- Page 22 and 23: Data Binding and Your First Angular
- Page 24 and 25: Data Binding and Your First Angular
- Page 26 and 27: Data Binding and Your First Angular
- Page 28 and 29: Data Binding and Your First Angular
- Page 30 and 31: Modules In JavaScript, placing func
- Page 34 and 35: Scopes 22 Hello world Hello {{ name
- Page 36 and 37: Scopes 24 Creation When we create a
- Page 38 and 39: Controllers 26 The simplest adding
- Page 40 and 41: Controllers 28 $rootScope. If it do
- Page 42 and 43: Controllers 30 Thin controller angu
- Page 44 and 45: Expressions 32 {{ parsedValue }}
- Page 46 and 47: Expressions 34 angular.module('myAp
- Page 48 and 49: Expressions 36 __ previewText
- Page 50 and 51: Filters 38 date The date filter all
- Page 52 and 53: Filters 40 object It will compare o
- Page 54 and 55: Filters 42 {{ San Francisco is very
- Page 56 and 57: Filters 44 {{ [{ 'name': 'Ari', 'st
- Page 58 and 59: Filters 46 All input fields can val
- Page 60 and 61: Filters 48 Control Variables in For
- Page 62 and 63: Filters 50 angular.module('myApp')
- Page 64 and 65: Filters 52 Your name We’ll d
- Page 66 and 67: Filters 54 Your email cannot be lo
- Page 68 and 69: Filters 56 Show Validations after S
- Page 70 and 71: Filters 58 } } }]); element.removeC
- Page 72 and 73: Introduction to Directives 60 Clic
- Page 74 and 75: Introduction to Directives 62 In
- Page 76 and 77: Introduction to Directives 64 Chrom
- Page 78 and 79: Introduction to Directives 66 Repla
- Page 80 and 81: Introduction to Directives 68 The
- Page 82 and 83:
Introduction to Directives 70 Be aw
- Page 84 and 85:
Introduction to Directives 72 scope
- Page 86 and 87:
Introduction to Directives 74 angul
- Page 88 and 89:
Introduction to Directives 76 Obser
- Page 90 and 91:
Introduction to Directives 78 Final
- Page 92 and 93:
Built-In Directives 80 As defined b
- Page 94 and 95:
Built-In Directives 82 ng-selected
- Page 96 and 97:
Built-In Directives 84 ng-app and n
- Page 98 and 99:
Built-In Directives 86 angular.modu
- Page 100 and 101:
Built-In Directives 88 angular.modu
- Page 102 and 103:
Built-In Directives 90 ng-if differ
- Page 104 and 105:
Built-In Directives 92 {{ name }} T
- Page 106 and 107:
Built-In Directives 94 ng-show/ng-h
- Page 108 and 109:
Built-In Directives 96 To prevent d
- Page 110 and 111:
Built-In Directives 98 angular.modu
- Page 112 and 113:
Built-In Directives 100 angular.mod
- Page 114 and 115:
Built-In Directives 102
- Page 116 and 117:
Directives Explained 104 angular.ap
- Page 118 and 119:
Directives Explained 106 angular.mo
- Page 120 and 121:
Directives Explained 108 Template (
- Page 122 and 123:
Directives Explained 110 .directive
- Page 124 and 125:
Directives Explained 112 Directives
- Page 126 and 127:
Directives Explained 114 The main u
- Page 128 and 129:
Directives Explained 116 to be pass
- Page 130 and 131:
Directives Explained 118 Controller
- Page 132 and 133:
Directives Explained 120 The link f
- Page 134 and 135:
Directives Explained 122 The stri
- Page 136 and 137:
Directives Explained 124 started th
- Page 138 and 139:
Directives Explained 126 angular.mo
- Page 140 and 141:
Directives Explained 128 angular.mo
- Page 142 and 143:
Directives Explained 130 Properties
- Page 144 and 145:
Angular Module Loading Angular modu
- Page 146 and 147:
Angular Module Loading 134 angular.
- Page 148 and 149:
Multiple Views and Routing In a sin
- Page 150 and 151:
Multiple Views and Routing 138 Rout
- Page 152 and 153:
Multiple Views and Routing 140 temp
- Page 154 and 155:
Multiple Views and Routing 142 { na
- Page 156 and 157:
Multiple Views and Routing 144 $loc
- Page 158 and 159:
Multiple Views and Routing 146 http
- Page 160 and 161:
Multiple Views and Routing 148 $rou
- Page 162 and 163:
Dependency Injection 150 Angular us
- Page 164 and 165:
Dependency Injection 152 var aContr
- Page 166 and 167:
Dependency Injection 154 has() The
- Page 168 and 169:
Dependency Injection 156 $ npm inst
- Page 170 and 171:
Services 158 Registering a Service
- Page 172 and 173:
Services 160 angular.module('myApp'
- Page 174 and 175:
Services 162 app.controller('Servic
- Page 176 and 177:
Services 164 • constant() • val
- Page 178 and 179:
Services 166 angular.module('myApp'
- Page 180 and 181:
Services 168 // Example of creating
- Page 182 and 183:
Services 170 value() If the return
- Page 184 and 185:
Services 172 return { events: event
- Page 186 and 187:
Communicating with the Outside Worl
- Page 188 and 189:
Communicating with the Outside Worl
- Page 190 and 191:
Communicating with the Outside Worl
- Page 192 and 193:
Communicating with the Outside Worl
- Page 194 and 195:
Communicating with the Outside Worl
- Page 196 and 197:
Communicating with the Outside Worl
- Page 198 and 199:
Communicating with the Outside Worl
- Page 200 and 201:
Communicating with the Outside Worl
- Page 202 and 203:
Communicating with the Outside Worl
- Page 204 and 205:
Communicating with the Outside Worl
- Page 206 and 207:
Communicating with the Outside Worl
- Page 208 and 209:
Communicating with the Outside Worl
- Page 210 and 211:
Communicating with the Outside Worl
- Page 212 and 213:
Communicating with the Outside Worl
- Page 214 and 215:
Communicating with the Outside Worl
- Page 216 and 217:
Communicating with the Outside Worl
- Page 218 and 219:
Communicating with the Outside Worl
- Page 220 and 221:
Communicating with the Outside Worl
- Page 222 and 223:
Communicating with the Outside Worl
- Page 224 and 225:
XHR in Practice 212 $http .jsonp("h
- Page 226 and 227:
XHR in Practice 214 Server CORS Req
- Page 228 and 229:
XHR in Practice 216 • Access-Cont
- Page 230 and 231:
XHR in Practice 218 Starting off
- Page 232 and 233:
XHR in Practice 220 Code Meaning 20
- Page 234 and 235:
XHR in Practice 222 case 403: $root
- Page 236 and 237:
XHR in Practice 224 angular.module(
- Page 238 and 239:
XHR in Practice 226 } }) }); Talkin
- Page 240 and 241:
XHR in Practice 228 angular.module(
- Page 242 and 243:
Promises 230 This callback pyramid
- Page 244 and 245:
Promises 232 angular.module('myApp'
- Page 246 and 247:
Promises 234 With this makeMultiple
- Page 248 and 249:
Promises 236 promise['finally'](fun
- Page 250 and 251:
Server Communication One of the mos
- Page 252 and 253:
Server Communication 240 $ cd myApp
- Page 254 and 255:
Server Communication 242 // ... //
- Page 256 and 257:
Server Communication 244 return d.p
- Page 258 and 259:
Server Communication 246 Most of th
- Page 260 and 261:
Server Communication 248 \
- Page 262 and 263:
Server Communication 250 The first
- Page 264 and 265:
Server Communication 252 $ python -
- Page 266 and 267:
Server Communication 254 angular.mo
- Page 268 and 269:
Server Communication 256 angular.mo
- Page 270 and 271:
Server Communication 258 All Aboard
- Page 272 and 273:
Server Communication 260 • PutObj
- Page 274 and 275:
Server Communication 262 // ... .pr
- Page 276 and 277:
Server Communication 264 return d.p
- Page 278 and 279:
Server Communication 266 We want to
- Page 280 and 281:
Server Communication 268 JSON.parse
- Page 282 and 283:
Server Communication 270 } }) } if
- Page 284 and 285:
Server Communication 272 The handle
- Page 286 and 287:
Server Communication 274 }); }); //
- Page 288 and 289:
Server Communication 276 var getIte
- Page 290 and 291:
Server Communication 278 If you do
- Page 292 and 293:
Server Communication 280 // ... $sc
- Page 294 and 295:
Server Communication 282 } }) }, fu
- Page 296 and 297:
Server Communication 284 When we up
- Page 298 and 299:
Server Communication 286 3. Add
- Page 300 and 301:
Server Communication 288 $save(key)
- Page 302 and 303:
Server Communication 290 Implicit S
- Page 304 and 305:
Server Communication 292 $firebaseA
- Page 306 and 307:
Server Communication 294 Beyond Ang
- Page 308 and 309:
Testing 296 Getting Started Testing
- Page 310 and 311:
Testing 298 Note that writing unit
- Page 312 and 313:
Testing 300 Karma init The process
- Page 314 and 315:
Testing 302 module.exports = functi
- Page 316 and 317:
Testing 304 Browser Captures The Ka
- Page 318 and 319:
Testing 306 exclude Karma can exclu
- Page 320 and 321:
Testing 308 • coverage • ng-htm
- Page 322 and 323:
Testing 310 $ karma init test/karma
- Page 324 and 325:
Testing 312 define([ 'app', 'jquery
- Page 326 and 327:
Testing 314 We set up expectations
- Page 328 and 329:
Testing 316 describe('A spec suite'
- Page 330 and 331:
Testing 318 describe('A spec suite'
- Page 332 and 333:
Testing 320 describe('A spec suite'
- Page 334 and 335:
Testing 322 browser().location().ur
- Page 336 and 337:
Testing 324 // The text of a block
- Page 338 and 339:
Testing 326 element("div", "signup
- Page 340 and 341:
Testing 328 We can enter ‘Ari’
- Page 342 and 343:
Testing 330 {{ person.name }} {{
- Page 344 and 345:
Testing 332 describe('myApp', funct
- Page 346 and 347:
Testing 334 // ... it('should be a
- Page 348 and 349:
Testing 336 // ... $httpBackend.exp
- Page 350 and 351:
Testing 338 // ... $httpBackend.exp
- Page 352 and 353:
Testing 340 // ... $httpBackend.whe
- Page 354 and 355:
Testing 342 Unit Testing Routes In
- Page 356 and 357:
Testing 344 $ cd myApp $ grunt serv
- Page 358 and 359:
Testing 346 Visual representation o
- Page 360 and 361:
Testing 348 Content loading tests T
- Page 362 and 363:
Testing 350 }, 1000); } tick(); });
- Page 364 and 365:
Testing 352 Unit Testing Services U
- Page 366 and 367:
Testing 354 describe('googleService
- Page 368 and 369:
Testing 356 it('should call gapi',
- Page 370 and 371:
Testing 358 [ { from: 'ari@fullstac
- Page 372 and 373:
Testing 360 it('loads the home temp
- Page 374 and 375:
Testing 362 replace: true, link: fu
- Page 376 and 377:
Testing 364 Unit Testing Events Whe
- Page 378 and 379:
Testing 366 $ npm install -g protra
- Page 380 and 381:
Testing 368 seleniumPort (integer)
- Page 382 and 383:
Testing 370 Writing Tests Protracto
- Page 384 and 385:
Testing 372 var AngularHomepage = f
- Page 386 and 387:
Events 374 A generally good rule of
- Page 388 and 389:
Events 376 Event Object The event o
- Page 390 and 391:
Events 378 $routeChangeSuccess The
- Page 392 and 393:
Architecture 380 Every Angular obje
- Page 394 and 395:
Architecture 382 Controllers When n
- Page 396 and 397:
Architecture 384 With our view var
- Page 398 and 399:
Angular Animation The Angular team
- Page 400 and 401:
Angular Animation 388 Automatically
- Page 402 and 403:
Angular Animation 390 .fade-in { -w
- Page 404 and 405:
Angular Animation 392 .fade-in.ng-e
- Page 406 and 407:
Angular Animation 394 Stagger anima
- Page 408 and 409:
Angular Animation 396 Action An ite
- Page 410 and 411:
Angular Animation 398 to {opacity:
- Page 412 and 413:
Angular Animation 400 angular.modul
- Page 414 and 415:
Angular Animation 402 angular.modul
- Page 416 and 417:
Angular Animation 404 .animateInclu
- Page 418 and 419:
Angular Animation 406 The ngSwitch
- Page 420 and 421:
Angular Animation 408 } }); }); $(e
- Page 422 and 423:
Angular Animation 410 .animateNgIf.
- Page 424 and 425:
Angular Animation 412 CSS3 Animatio
- Page 426 and 427:
Angular Animation 414 Action is rem
- Page 428 and 429:
Angular Animation 416 angular.modul
- Page 430 and 431:
Angular Animation 418 addClass() Th
- Page 432 and 433:
Angular Animation 420 1. Runs any J
- Page 434 and 435:
Angular Animation 422 angular.modul
- Page 436 and 437:
Angular Animation 424 Luckily, the
- Page 438 and 439:
The Digest Loop and $apply Let’s
- Page 440 and 441:
The Digest Loop and $apply 428 the
- Page 442 and 443:
The Digest Loop and $apply 430 angu
- Page 444 and 445:
The Digest Loop and $apply 432 acti
- Page 446 and 447:
The Digest Loop and $apply 434 // W
- Page 448 and 449:
Demystifying Angular At their core,
- Page 450 and 451:
Demystifying Angular 438 For mo
- Page 452 and 453:
Essential AngularJS Extensions One
- Page 454 and 455:
Essential AngularJS Extensions 442
- Page 456 and 457:
Essential AngularJS Extensions 444
- Page 458 and 459:
Essential AngularJS Extensions 446
- Page 460 and 461:
Essential AngularJS Extensions 448
- Page 462 and 463:
Essential AngularJS Extensions 450
- Page 464 and 465:
Essential AngularJS Extensions 452
- Page 466 and 467:
Essential AngularJS Extensions 454
- Page 468 and 469:
Essential AngularJS Extensions 456
- Page 470 and 471:
Mobile Apps Mobile apps are not the
- Page 472 and 473:
Mobile Apps 460 Save ngTouch also i
- Page 474 and 475:
Mobile Apps 462 The end event is fi
- Page 476 and 477:
Mobile Apps 464 angular-gestures In
- Page 478 and 479:
Mobile Apps 466 Cordova exposes nat
- Page 480 and 481:
Mobile Apps 468 $ cordova build ios
- Page 482 and 483:
Mobile Apps 470 $ cordova platforms
- Page 484 and 485:
Mobile Apps 472 $ cordova build ios
- Page 486 and 487:
Mobile Apps 474 Including Angular W
- Page 488 and 489:
Mobile Apps 476 • Write code •
- Page 490 and 491:
Mobile Apps 478 Building the Mobile
- Page 492 and 493:
Mobile Apps 480 These commands are
- Page 494 and 495:
Localization As worldwide access to
- Page 496 and 497:
Localization 484 { } 'MESSAGE': 'He
- Page 498 and 499:
Localization 486 app.config(functio
- Page 500 and 501:
Localization 488 To configure our
- Page 502 and 503:
Localization 490 Hello! Our conten
- Page 504 and 505:
Localization 492 grunt.initConfig({
- Page 506 and 507:
Localization 494 Setting plural for
- Page 508 and 509:
Localization 496 }, }, }) We sugges
- Page 510 and 511:
Caching In large, internet-scale we
- Page 512 and 513:
Caching 500 cache.get("hello"); rem
- Page 514 and 515:
Caching 502 angular.module('myApp')
- Page 516 and 517:
Security 504 Basically, at the roo
- Page 518 and 519:
Security 506 .controller('MyControl
- Page 520 and 521:
Security 508 • blacklist (array)
- Page 522 and 523:
Security 510 The type of $sce conte
- Page 524 and 525:
AngularJS and Internet Explorer Ang
- Page 526 and 527:
AngularJS and Internet Explorer 514
- Page 528 and 529:
AngularJS and Internet Explorer 516
- Page 530 and 531:
AngularJS and Internet Explorer 518
- Page 532 and 533:
AngularJS and Internet Explorer 520
- Page 534 and 535:
AngularJS and Internet Explorer 522
- Page 536 and 537:
AngularJS and Internet Explorer 524
- Page 538 and 539:
Building Angular Chrome Apps 526 Bu
- Page 540 and 541:
Building Angular Chrome Apps 528 ma
- Page 542 and 543:
Building Angular Chrome Apps 530 Lo
- Page 544 and 545:
Building Angular Chrome Apps 532
- Page 546 and 547:
Building Angular Chrome Apps 534 In
- Page 548 and 549:
Building Angular Chrome Apps 536 th
- Page 550 and 551:
Building Angular Chrome Apps 538 Th
- Page 552 and 553:
Building Angular Chrome Apps 540 #a
- Page 554 and 555:
Building Angular Chrome Apps 542 re
- Page 556 and 557:
Building Angular Chrome Apps 544 Ci
- Page 558 and 559:
Building Angular Chrome Apps 546 ge
- Page 560 and 561:
Building Angular Chrome Apps 548 mo
- Page 562 and 563:
Building Angular Chrome Apps 550 Ha
- Page 564 and 565:
Optimizing Angular Apps 552 app.fac
- Page 566 and 567:
Optimizing Angular Apps 554 Optimiz
- Page 568 and 569:
Optimizing Angular Apps 556 .direct
- Page 570 and 571:
Optimizing Angular Apps 558 bo-text
- Page 572 and 573:
Optimizing Angular Apps 560 .contro
- Page 574 and 575:
Optimizing Angular Apps 562 We can
- Page 576 and 577:
Debugging AngularJS 564 scope() We
- Page 578 and 579:
Debugging AngularJS 566 Batarang ch
- Page 580 and 581:
Debugging AngularJS 568 Dependency
- Page 582 and 583:
Next Steps 570 contents() Gets the
- Page 584 and 585:
Next Steps 572 With Grunt installed
- Page 586 and 587:
Next Steps 574 With that set, Grunt
- Page 588 and 589:
Next Steps 576 First off, like any
- Page 590 and 591:
Next Steps 578 angular.module('myBe
- Page 592 and 593:
Next Steps 580 ngtemplates: { app:
- Page 594 and 595:
Next Steps 582 • spec-e2e - our p
- Page 596 and 597:
Next Steps 584 Although in-depth bo
- Page 598 and 599:
Next Steps 586 $ cat bower.json { "
- Page 600 and 601:
Next Steps 588 $ mkdir myapp && cd
- Page 602 and 603:
Next Steps 590 // in app/scripts/se
- Page 604 and 605:
Next Steps 592 $ yo angular:decorat
- Page 606 and 607:
Next Steps 594 Packaging Our Templa
- Page 608:
Next Steps 596 Note that when we’