SlideShare a Scribd company logo
AngularJS - Part I
Cristina Hernández
Roger Vilà
Index
● What is AngularJS? Why Angular JS?
● History of AngularJS
● Angular JS Patterns
● Introduce to AngularJS Code
● Invoking Angular JS
● DataBinding in AngularJS
● Expressions
● Directives
● Filters
● Modules
● Controllers
● Services
● Forms
● Application example
“Angularjs is what HTML would have been if it had
been designed for building web applications”
https://angularjs.org/
What is Angular JS?
AngularJS is an open-source web application framework for
client-side MVC and MVVM architectures.
Why Angular JS?
HTML is great for declaring static documents, but it falters
when we try to use it for declaring dynamic views in web-
applications. Angular JS lets you extend HTML vocabulary for
your application
History of Angular JS
AngularJS was originally developed in
2009 by Misko Hevery at Brach Tech LLC.
Created at Google as internal project.
AngularJS version 1.0 was released in 2012.
Currently working on 1.4.9
Angular JS 2 (Beta)
https://en.wikipedia.org/wiki/AngularJS
MVC - Model View Controller
VIEW
MODEL CONTROLLER
- Renders the Model data
- Sends user actions/events
to controller
- UI
- Defines application
behaviour
- Maps user actions to
Model
- Selects view for response
- Business Logic
- Notifies view changes
- Data in general
User Action or View Load
Maps to particular
Model after fetching
the data
Implements the Business
Logic on response data
and binds it to View
MVVM - Model View View Model
Model
Entire model contained in a single javascript data
structure.
var obj = {
employeeName: "Mattias",
company: "Net Insight AB"
}
Controller
Javascript code that populates the view and reacts to
changes in it.
function myCtrl( $scope ) {
$scope = {
employeeName: "Mattias",
company: "Net Insight AB"
};
$scope.save_info = function() {
console.log( $scope.employeeName );
};
}
View
"Extended" html. Dynamic and syncronized
<div ng-controller = myCtrl>
<h2>{{company}}</h2>
Employee name:
<input ng-model="employeeName"></input>
<button ng-click="save_info()"
>Submit</button>
</div>
Invoking Angular
Any application must do two things to start Angular:
1) Load the angular.js library
2) Tell Angular which part of the DOM it should manage with the ng-app
directive
<script type=”text/javascript” src=”angular.min.js” />
<html>
<div ng-app>
…
</div>
...
</html>
<html ng-app>
....
</html>
Client-Side templates
controllers.js:
function HelloController($scope) {
$scope.greeting = { text: 'Hello' };
}
hello.tml:
<html ng-app>
<head>
<script src="angular.js"></script>
<script src="controllers.js"></script>
</head>
<body>
<div ng-controller='HelloController'>
<p>{{greeting.text}}, World</p>
</div>
</body>
</html>
Result:
Hello, World
Data Binding
-
One-way binding:
Binding from scope to HTML. “Mustache” syntax
{{dato}}
Two-way binding:
Binding from scopel to HTML, and binding from HTML to scope
<input type="text" ng-model="miDato" />
Two-Way Data Binding
hello.html
<html ng-app>
<head>
<script src="angular.js"></script>
<script src="controllers.js"></script>
</head>
<body>
<div ng-controller='HelloController'>
<input ng-model='greeting.text'>
<p>{{greeting.text}}, World</p>
</div>
</body>
</html>
controllers.js:
function HelloController($scope) {
$scope.greeting = { text: 'Hello' };
}
Hello
Hello, World https://docs.angularjs.org/guide/databinding
Expressions
Allow you to insert dynamic values into your HTML
AngularJS expressions can be written inside double braces: {{expression}}
Angular JS expressions can be written inside a directive: ng-bind=”expression”
1) Numerical Operations
{{ 4 + 6}} → 10
2) String Operations
{{“hello” + “ you”}} → hello you
https://docs.angularjs.org/guide/expression
Directives
Directives are ways to expand our html. They allow you to add from small pieces of
code or full functionality
Angular comes with a set of these directives built in, like:
● ng-app
● ng-controller
● ng-model
● ng-bind
● ng-repeat
● ng-init
● ng-show/ng-hide
● ng-class
● ng-click
● ng-form
● ng-submit
● ng-if
● ng-href
● ng-src
● custom directives (Next workshop)
https://docs.angularjs.org/api/ng/directive/
ng-model
With the ng-model directive you can bind the value of an input field to a
variable created in AngularJS
<div ng-app="myApp" ng-controller="myCtrl">
Name: <input ng-model="name">
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.name = "John Doe";
});
</script>
ng-repeat
<h3>FIFA Golden Ball:</h3>
<div ng-app ng-controller="MyCtrl">
<ul>
<li ng-repeat="player in players">{{name}}: {{num}}</li>
</ul>
</div>
function MyCtrl($scope) {
$scope.players = [
{
name: “Roger”
num: 6
},
{
name: “Messi”
num: 5
},
{
name: “Cristiano Ronaldo”
num: 3
}
];
}
ng-show / ng-hide
The ng-show / hide directive shows or hides the given html based
on the expression provided in the ng show/hide attribute
Click me: <input type="checkbox" ng-model="checked">
<div>
Show:
<div class="animate-show" ng-show="checked">
<span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
</div>
</div>
<div>
Hide:
<div class="animate-show" ng-hide="checked">
<span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
</div>
</div>
Filters
● Angular filters format data for display to the user.
{{ expression [| filter_name[:parameter_value]...] }}
{{ totalCost | currency }}
● Filters can be chained and can take optional
arguments.
{{ totalCost | currency | filter2 | filter3 }}
{{ totalCost | currency:”USD$” }}
Built-in Filters
● filter
● currency
● number
● date
● json
● lowercase
● uppercase
● limitTo
● orderBy
https://docs.angularjs.org/api/ng/filter
Filters
<div ng-init="friends = [{name:'John', phone:'555-1276'},
{name:'Mary', phone:'800-BIG-MARY'},
{name:'Mike', phone:'555-4321'}]"></div>
<label>Search: <input ng-model="searchText"></label>
<table id="searchTextResults">
<tr><th>Name</th><th>Phone</th></tr>
<tr ng-repeat="friend in friends | filter:searchText |
orderBy:'name'">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
</tr>
</table>
Filters in Javascript
$filter(‘number’)(15,5) {{ 15 | number:5 }}
Modules
- Where we write pieces of our Angular application.
- Makes our code more maintainable, testable and
readable.
- Where we define dependencies for our app
Modules
var app = angular.module(‘moduleName’, [] );
Dependencies
Creating:
Including the module:
<html ng-app=”moduleName”>
....
</html>
<html>
<div ng-app=”moduleName”>
…
</div>
...
</html>
Modules
var app = angular.module(‘moduleName’, [] )
.config(function () {
...
}).run(function () {
...
});
app.controller(function(){
…
});
app.service(function(){
…
});
app.directive(function(){
…
});
Controllers
Controllers are where we define our app’s behavior by
defining functions and values.
app.controller('ViewCtrl', ['$scope', '$location', 'recipe',
function($scope, $location, recipe) {
$scope.recipe = recipe;
$scope.edit = function() {
$location.path('/edit/' + recipe.id);
};
}]);
<html>
<div ng-controller=·ViewCtrl”>
…
</div>
...
</html>
$scope
Scope is an object that refers to the application
model.
VIEW CONTROLLER$scope
<input type=”text” ng-model=”name” />
function SimpleController($scope) {
$scope.name = “Leo”;
}
Services
Services are singletons objects that are instantiated
only once per app.
Services are used to organize and share code
across your app.
Controllers are view-specific, services are app-
specific.
Built-in Services
● $http
● $q
● $window
● $location
● ...
Built-in Services - $http
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readystate == 4 && xmlhttp.status == 200) {
var response = xmlhttp.responseText;
} else if (xmlhttp.status == 400) {
// Handle error gracefully
}
};
// Setup connection
xmlhttp.open(“GET”, “http://myserver/api”, true);
// Make the request
xmlhttp.send();
$http.get('api/user', {params: {id: '5'}
}).success(function(data, status,
headers, config) {
// Do something successful.
}).error(function(data, status, headers,
config) {
// Handle the error
});
Forms
Forms and controls provide validation services, so that
the user can be notified of invalid input.
This provides a better user experience.
<div ng-form=”loginForm” >
<input type=”text” ng-model=”user.name” name=”uName” required />
<button ng-click=”update(user)” ng-disabled=”loginForm.$invalid”>
SAVE
</button>
</div>
Debugging
Batarang → Google Chrome Extension

More Related Content

PDF
Workshop 27: Isomorphic web apps with ReactJS
PDF
Workshop 14: AngularJS Parte III
PDF
Building scalable applications with angular js
PDF
Workshop 13: AngularJS Parte II
PDF
AngularJS Basics with Example
PDF
Workshop 16: EmberJS Parte I
PPTX
AngularJs
PDF
Workshop 24: React Native Introduction
Workshop 27: Isomorphic web apps with ReactJS
Workshop 14: AngularJS Parte III
Building scalable applications with angular js
Workshop 13: AngularJS Parte II
AngularJS Basics with Example
Workshop 16: EmberJS Parte I
AngularJs
Workshop 24: React Native Introduction

What's hot (20)

PPTX
Practical AngularJS
PPTX
AngularJS Internal
PPTX
AngularJS Directives
PPTX
Angularjs Basics
PPTX
The AngularJS way
PDF
Sane Async Patterns
PPTX
AngularJS Architecture
PDF
Angular js routing options
PDF
AngularJS Framework
PPTX
IndexedDB - Querying and Performance
ODP
AngularJs Crash Course
PDF
Advanced Tips & Tricks for using Angular JS
PDF
Workshop 9: BackboneJS y patrones MVC
PDF
Introduction to AJAX In WordPress
PPTX
Workshop Intro: FrontEnd General Overview
PPT
Dynamic Application Development by NodeJS ,AngularJS with OrientDB
PPTX
Angular js
PDF
Workshop 2: JavaScript Design Patterns
PDF
Introduction to AngularJS
PDF
AngularJS Basic Training
Practical AngularJS
AngularJS Internal
AngularJS Directives
Angularjs Basics
The AngularJS way
Sane Async Patterns
AngularJS Architecture
Angular js routing options
AngularJS Framework
IndexedDB - Querying and Performance
AngularJs Crash Course
Advanced Tips & Tricks for using Angular JS
Workshop 9: BackboneJS y patrones MVC
Introduction to AJAX In WordPress
Workshop Intro: FrontEnd General Overview
Dynamic Application Development by NodeJS ,AngularJS with OrientDB
Angular js
Workshop 2: JavaScript Design Patterns
Introduction to AngularJS
AngularJS Basic Training
Ad

Viewers also liked (20)

PDF
Workshop 10: ECMAScript 6
PDF
Workshop 5: JavaScript testing
PDF
Workshop 8: Templating: Handlebars, DustJS
PDF
Beginner workshop to angularjs presentation at Google
PDF
Workshop 15: Ionic framework
PDF
Workshop 7: Single Page Applications
PDF
Unlock The Value Of Your Microsoft and SAP Investments
PPTX
Change document display
PDF
Workshop iOS 3: Testing, protocolos y extensiones
PPT
CDS Unit Testing
PDF
Workshop 11: Trendy web designs & prototyping
PDF
Workshop iOS 4: Closures, generics & operators
PDF
Multithreading 101
PDF
Hana sql
PDF
JavaScript for ABAP Programmers - 7/7 Functional Programming
PPT
Automated Testing Of Web Applications Using XML
PDF
Getting Started with OpenUI5 (San Francisco State University)
PDF
Python Intro
PPTX
Introduction to Design Thinking
PDF
Workhop iOS 1: Fundamentos de Swift
Workshop 10: ECMAScript 6
Workshop 5: JavaScript testing
Workshop 8: Templating: Handlebars, DustJS
Beginner workshop to angularjs presentation at Google
Workshop 15: Ionic framework
Workshop 7: Single Page Applications
Unlock The Value Of Your Microsoft and SAP Investments
Change document display
Workshop iOS 3: Testing, protocolos y extensiones
CDS Unit Testing
Workshop 11: Trendy web designs & prototyping
Workshop iOS 4: Closures, generics & operators
Multithreading 101
Hana sql
JavaScript for ABAP Programmers - 7/7 Functional Programming
Automated Testing Of Web Applications Using XML
Getting Started with OpenUI5 (San Francisco State University)
Python Intro
Introduction to Design Thinking
Workhop iOS 1: Fundamentos de Swift
Ad

Similar to Workshop 12: AngularJS Parte I (20)

DOCX
Angular js
PDF
Wt unit 5 client &amp; server side framework
PPTX
ANGULARJS introduction components services and directives
PPTX
Basics of AngularJS
PPTX
Angular workshop - Full Development Guide
PDF
AngularJS Basics
PPTX
Angular js
PPTX
Intoduction to Angularjs
PPTX
Angular js PPT
PDF
Dive into AngularJS and directives
PPTX
Angular Javascript Tutorial with command
PDF
Angularjs
PDF
One Weekend With AngularJS
PDF
Introduction to AngularJS By Bharat Makwana
PPTX
Angular Presentation
PPTX
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
PDF
Angular.js Primer in Aalto University
PPTX
ME vs WEB - AngularJS Fundamentals
PPTX
Kalp Corporate Angular Js Tutorials
Angular js
Wt unit 5 client &amp; server side framework
ANGULARJS introduction components services and directives
Basics of AngularJS
Angular workshop - Full Development Guide
AngularJS Basics
Angular js
Intoduction to Angularjs
Angular js PPT
Dive into AngularJS and directives
Angular Javascript Tutorial with command
Angularjs
One Weekend With AngularJS
Introduction to AngularJS By Bharat Makwana
Angular Presentation
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
Angular.js Primer in Aalto University
ME vs WEB - AngularJS Fundamentals
Kalp Corporate Angular Js Tutorials

More from Visual Engineering (14)

PDF
Workshop iOS 2: Swift - Structures
PDF
Workshop 26: React Native - The Native Side
PDF
Workshop 25: React Native - Components
PDF
Workshop 23: ReactJS, React & Redux testing
PDF
Workshop 22: ReactJS Redux Advanced
PDF
Workshop 22: React-Redux Middleware
PDF
Workshop 21: React Router
PDF
Workshop 20: ReactJS Part II Flux Pattern & Redux
PDF
Workshop 19: ReactJS Introduction
PDF
Workshop 18: CSS Animations & cool effects
PDF
Workshop 17: EmberJS parte II
PDF
Workshop 6: Designer tools
PDF
Workshop 4: NodeJS. Express Framework & MongoDB.
PDF
Workshop 3: JavaScript build tools
Workshop iOS 2: Swift - Structures
Workshop 26: React Native - The Native Side
Workshop 25: React Native - Components
Workshop 23: ReactJS, React & Redux testing
Workshop 22: ReactJS Redux Advanced
Workshop 22: React-Redux Middleware
Workshop 21: React Router
Workshop 20: ReactJS Part II Flux Pattern & Redux
Workshop 19: ReactJS Introduction
Workshop 18: CSS Animations & cool effects
Workshop 17: EmberJS parte II
Workshop 6: Designer tools
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 3: JavaScript build tools

Recently uploaded (20)

PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
history of c programming in notes for students .pptx
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
ai tools demonstartion for schools and inter college
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Digital Strategies for Manufacturing Companies
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
System and Network Administraation Chapter 3
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
System and Network Administration Chapter 2
PPTX
Introduction to Artificial Intelligence
PPTX
L1 - Introduction to python Backend.pptx
2025 Textile ERP Trends: SAP, Odoo & Oracle
Understanding Forklifts - TECH EHS Solution
history of c programming in notes for students .pptx
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
ai tools demonstartion for schools and inter college
Softaken Excel to vCard Converter Software.pdf
ManageIQ - Sprint 268 Review - Slide Deck
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Digital Strategies for Manufacturing Companies
Wondershare Filmora 15 Crack With Activation Key [2025
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
How Creative Agencies Leverage Project Management Software.pdf
System and Network Administraation Chapter 3
VVF-Customer-Presentation2025-Ver1.9.pptx
CHAPTER 2 - PM Management and IT Context
System and Network Administration Chapter 2
Introduction to Artificial Intelligence
L1 - Introduction to python Backend.pptx

Workshop 12: AngularJS Parte I

  • 1. AngularJS - Part I Cristina Hernández Roger Vilà
  • 2. Index ● What is AngularJS? Why Angular JS? ● History of AngularJS ● Angular JS Patterns ● Introduce to AngularJS Code ● Invoking Angular JS ● DataBinding in AngularJS ● Expressions ● Directives ● Filters ● Modules ● Controllers ● Services ● Forms ● Application example
  • 3. “Angularjs is what HTML would have been if it had been designed for building web applications” https://angularjs.org/
  • 4. What is Angular JS? AngularJS is an open-source web application framework for client-side MVC and MVVM architectures. Why Angular JS? HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web- applications. Angular JS lets you extend HTML vocabulary for your application
  • 5. History of Angular JS AngularJS was originally developed in 2009 by Misko Hevery at Brach Tech LLC. Created at Google as internal project. AngularJS version 1.0 was released in 2012. Currently working on 1.4.9 Angular JS 2 (Beta) https://en.wikipedia.org/wiki/AngularJS
  • 6. MVC - Model View Controller VIEW MODEL CONTROLLER - Renders the Model data - Sends user actions/events to controller - UI - Defines application behaviour - Maps user actions to Model - Selects view for response - Business Logic - Notifies view changes - Data in general User Action or View Load Maps to particular Model after fetching the data Implements the Business Logic on response data and binds it to View
  • 7. MVVM - Model View View Model
  • 8. Model Entire model contained in a single javascript data structure. var obj = { employeeName: "Mattias", company: "Net Insight AB" }
  • 9. Controller Javascript code that populates the view and reacts to changes in it. function myCtrl( $scope ) { $scope = { employeeName: "Mattias", company: "Net Insight AB" }; $scope.save_info = function() { console.log( $scope.employeeName ); }; }
  • 10. View "Extended" html. Dynamic and syncronized <div ng-controller = myCtrl> <h2>{{company}}</h2> Employee name: <input ng-model="employeeName"></input> <button ng-click="save_info()" >Submit</button> </div>
  • 11. Invoking Angular Any application must do two things to start Angular: 1) Load the angular.js library 2) Tell Angular which part of the DOM it should manage with the ng-app directive <script type=”text/javascript” src=”angular.min.js” /> <html> <div ng-app> … </div> ... </html> <html ng-app> .... </html>
  • 12. Client-Side templates controllers.js: function HelloController($scope) { $scope.greeting = { text: 'Hello' }; } hello.tml: <html ng-app> <head> <script src="angular.js"></script> <script src="controllers.js"></script> </head> <body> <div ng-controller='HelloController'> <p>{{greeting.text}}, World</p> </div> </body> </html> Result: Hello, World
  • 13. Data Binding - One-way binding: Binding from scope to HTML. “Mustache” syntax {{dato}} Two-way binding: Binding from scopel to HTML, and binding from HTML to scope <input type="text" ng-model="miDato" />
  • 14. Two-Way Data Binding hello.html <html ng-app> <head> <script src="angular.js"></script> <script src="controllers.js"></script> </head> <body> <div ng-controller='HelloController'> <input ng-model='greeting.text'> <p>{{greeting.text}}, World</p> </div> </body> </html> controllers.js: function HelloController($scope) { $scope.greeting = { text: 'Hello' }; } Hello Hello, World https://docs.angularjs.org/guide/databinding
  • 15. Expressions Allow you to insert dynamic values into your HTML AngularJS expressions can be written inside double braces: {{expression}} Angular JS expressions can be written inside a directive: ng-bind=”expression” 1) Numerical Operations {{ 4 + 6}} → 10 2) String Operations {{“hello” + “ you”}} → hello you https://docs.angularjs.org/guide/expression
  • 16. Directives Directives are ways to expand our html. They allow you to add from small pieces of code or full functionality Angular comes with a set of these directives built in, like: ● ng-app ● ng-controller ● ng-model ● ng-bind ● ng-repeat ● ng-init ● ng-show/ng-hide ● ng-class ● ng-click ● ng-form ● ng-submit ● ng-if ● ng-href ● ng-src ● custom directives (Next workshop) https://docs.angularjs.org/api/ng/directive/
  • 17. ng-model With the ng-model directive you can bind the value of an input field to a variable created in AngularJS <div ng-app="myApp" ng-controller="myCtrl"> Name: <input ng-model="name"> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.name = "John Doe"; }); </script>
  • 18. ng-repeat <h3>FIFA Golden Ball:</h3> <div ng-app ng-controller="MyCtrl"> <ul> <li ng-repeat="player in players">{{name}}: {{num}}</li> </ul> </div> function MyCtrl($scope) { $scope.players = [ { name: “Roger” num: 6 }, { name: “Messi” num: 5 }, { name: “Cristiano Ronaldo” num: 3 } ]; }
  • 19. ng-show / ng-hide The ng-show / hide directive shows or hides the given html based on the expression provided in the ng show/hide attribute Click me: <input type="checkbox" ng-model="checked"> <div> Show: <div class="animate-show" ng-show="checked"> <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked. </div> </div> <div> Hide: <div class="animate-show" ng-hide="checked"> <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked. </div> </div>
  • 20. Filters ● Angular filters format data for display to the user. {{ expression [| filter_name[:parameter_value]...] }} {{ totalCost | currency }} ● Filters can be chained and can take optional arguments. {{ totalCost | currency | filter2 | filter3 }} {{ totalCost | currency:”USD$” }}
  • 21. Built-in Filters ● filter ● currency ● number ● date ● json ● lowercase ● uppercase ● limitTo ● orderBy https://docs.angularjs.org/api/ng/filter
  • 22. Filters <div ng-init="friends = [{name:'John', phone:'555-1276'}, {name:'Mary', phone:'800-BIG-MARY'}, {name:'Mike', phone:'555-4321'}]"></div> <label>Search: <input ng-model="searchText"></label> <table id="searchTextResults"> <tr><th>Name</th><th>Phone</th></tr> <tr ng-repeat="friend in friends | filter:searchText | orderBy:'name'"> <td>{{friend.name}}</td> <td>{{friend.phone}}</td> </tr> </table>
  • 24. Modules - Where we write pieces of our Angular application. - Makes our code more maintainable, testable and readable. - Where we define dependencies for our app
  • 25. Modules var app = angular.module(‘moduleName’, [] ); Dependencies Creating: Including the module: <html ng-app=”moduleName”> .... </html> <html> <div ng-app=”moduleName”> … </div> ... </html>
  • 26. Modules var app = angular.module(‘moduleName’, [] ) .config(function () { ... }).run(function () { ... }); app.controller(function(){ … }); app.service(function(){ … }); app.directive(function(){ … });
  • 27. Controllers Controllers are where we define our app’s behavior by defining functions and values. app.controller('ViewCtrl', ['$scope', '$location', 'recipe', function($scope, $location, recipe) { $scope.recipe = recipe; $scope.edit = function() { $location.path('/edit/' + recipe.id); }; }]); <html> <div ng-controller=·ViewCtrl”> … </div> ... </html>
  • 28. $scope Scope is an object that refers to the application model. VIEW CONTROLLER$scope <input type=”text” ng-model=”name” /> function SimpleController($scope) { $scope.name = “Leo”; }
  • 29. Services Services are singletons objects that are instantiated only once per app. Services are used to organize and share code across your app. Controllers are view-specific, services are app- specific.
  • 30. Built-in Services ● $http ● $q ● $window ● $location ● ...
  • 31. Built-in Services - $http var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readystate == 4 && xmlhttp.status == 200) { var response = xmlhttp.responseText; } else if (xmlhttp.status == 400) { // Handle error gracefully } }; // Setup connection xmlhttp.open(“GET”, “http://myserver/api”, true); // Make the request xmlhttp.send(); $http.get('api/user', {params: {id: '5'} }).success(function(data, status, headers, config) { // Do something successful. }).error(function(data, status, headers, config) { // Handle the error });
  • 32. Forms Forms and controls provide validation services, so that the user can be notified of invalid input. This provides a better user experience. <div ng-form=”loginForm” > <input type=”text” ng-model=”user.name” name=”uName” required /> <button ng-click=”update(user)” ng-disabled=”loginForm.$invalid”> SAVE </button> </div>
  • 33. Debugging Batarang → Google Chrome Extension