SlideShare a Scribd company logo
Getting Started
with
Akshay Mathur
What is Angular
• Browser-side MVC toolkit
– For creating Single Page Web Apps
– With less custom code
• All in one JavaScript framework
– Encapsulates many concepts within
– jQuery may not be required
• Resembles more with server side Frameworks
Prerequisites
• Advance JS objects and objects instances
• Model, View, Controller and App objects
• Data Bindings (one-way and two way)
• Client-side templates
• URL routing
• Module definition
• Module dependency
• Asynchronous programing
Custom HTML Attributes
• To any HTML node, any arbitrary attribute can
be added
<div howdy=“I am fine”></div>
• Browsers simply ignore such attributes
• These attributes can be read by JavaScript
Directives
• Angular uses custom HTML attributes for its
use
– They call it directives
• Angular script reads these directives and acts
accordingly
• HTML tags are also used as directives
– Standard HTML tags with changed behavior
– Custom HTML tags
ng-app
• The ng-app directive serves two purposes
– Tells Angular about the root node for the application
– Assigns witch app object (module) to use
<html ng-app="phonecatApp">
<head>
<script src=”angular.js"></script>
</head>
<body> … …</body>
</html>
Creating Angular Module
• All modules (angular core or 3rd party) that
should be available to an application must be
registered
• The angular.module is a global place for
creating, registering and retrieving Angular
modules
angular.module(name,
[requires],
configFn);
App Object
• App may be used as the top level Angular Module
– All other objects are defined as member of this object
var phonecatApp =
angular.module(
'phonecatApp',
[]
);
The Phone Catalogue App
• Nexus S
Fast just got faster with
Nexus S.
• Motorola XOOM with Wi-Fi
The Next, Next Generation
tablet.
<ul>
<li>
<span>Nexus S</span>
<p> Fast just got
faster with Nexus S. </p>
</li>
<li>
<span>Motorola XOOM
with Wi-Fi</span>
<p> The Next, Next
Generation tablet. </p>
</li>
</ul>
HTML Templates
• When similar HTML needs to be written for
different content, templates are used
• Template system allows to fill up data into
templates
– This is done via data binding expressions
• The template system also allows for basic
program constructs e.g. loops
JavaScript Template System
• Dynamically creates HTML code in JS
– Data driven HTML
– Allows variable substitution, looping and
conditional statements
• Generated HTML is inserted into the DOM for
changing part of the page on-the-fly
• Many libraries are available e.g. Handlebars,
DustJS, Mustache, UnderscoreJS etc.
– Angular has its own template system
@akshaymathu 11
View
• Object that holds visual representation of the
data
• Provides methods for
– Rendering the user interface
– Handling the user interaction within the view
• Angular uses template as view
• The view gets its data from its Model
– Each view has its own model
@akshaymathu 12
Model
• Object that holds data in a structural form
• Makes data available to view
• Acts as a unit of data
• By default Angular uses $scope object as
model
– Each view has its own model so the scope of
$scope is limited to the view
@akshaymathu 13
Value Substitution
• Values are passed to template using $scope
object
– Members of $scope can be used directly in template
• Items in {{ }} are treated as variables and replaced
by its values
<li>
<span>{{phone_name}}</span>
<p>{{phone_desc}}</p>
</li>
@akshaymathu 14
Looping
• Looping is done using ng-repeat directive
• Data passed to ng-repeat should be an Array
<li ng-repeat="phone in phones">
<span>{{phone.name}}</span>
<p>{{phone.desc}}</p>
</li>
@akshaymathu 15
Controller
• Object that acts as a glue to connects view
and model
• The ng-controller directive attaches controller
to the view
<ul ng-controller=
"PhoneListCtrl">
<li> … …</li>
</ul>
@akshaymathu 16
Passing Data to View
• Controller method of the App Object creates a
controller
• Value of $scope is set in the controller
phonecatApp.controller('PhoneListCtrl',
function ($scope) {
$scope.phones = [
{'name': 'Nexus S',
’desc': 'Fast just got faster'},
{'name': 'Motorola XOOM', ’desc': ’Next
Generation tablet.’}
];
}
);
Everything Together: HTML
<html ng-app="phonecatApp">
<head>
<script src=”angular.js"></script>
</head>
<body>
<ul ng-controller="PhoneListCtrl">
<li ng-repeat="phone in phones">
<span>{{phone.name}}</span>
<p>{{phone.desc}}</p>
</li>
</ul>
</body>
</html>
@akshaymathu 18
Everything Together: JS
var phonecatApp =
angular.module('phonecatApp', []);
phonecatApp.controller('PhoneListCtrl',
function ($scope) {
$scope.phones = [
{'name': 'Nexus S',
’desc': 'Fast just got faster'},
{'name': 'Motorola XOOM',
’desc': ’Next Generation tablet.’}
];
}
);
Reading from Form Elements
• A model can be attached to form elements
– AngularJS updates the attached Model as value in
form element changes
<input ng-model="query">
– AngularJS also updates the value of form element
changes when the attached model is changed
Data Bindings
• Corresponding changes trigger as soon as data
changes at one place
• One way data binding
– Template re-renders as data in $scope changes
• Two way data binding
– Value of form element and attached model always
remain in sync
Modifying Data
• AngularJS provides a few readymade filter
functions for achieving certain effect
– Can be included within expressions in the
template
var val = 54.2
{{ val | number : 3}} // 54.200
• Option to write custom filters is available
Formatting Filters
• Number: Formats number
{{ val | number : 3}}
• Currency: Puts a currency identifier
{{amount | currency: "USD"}}
• Date: Formats date
{{today | date: 'medium'}}
• Lowercase/Uppercase
{{’somestr’| uppercase}}
• JSON: Formats JS object as string
{{ {'name':'value'} | json }}
Filtering Arrays
• Limit: Picks limited number of items
{{[1,2,3,4,5,6,7]| limitTo: 3 }}
• Filter: Picks items based on condition
{{[‘Bob’, ‘Mike’] | filter:
‘m’}}
• Order: Orders the array of objects in a field
{{[o1, o2] | orderBy: o1.f1}}
Filtering Repeater
<body>
Search: <input ng-model="query">
Sort by:
<select ng-model="orderProp">
<option value="name">Alphabetical</option>
<option value="age">Newest</option>
</select>
<ul class="phones">
<li ng-repeat="phone in phones | filter: query |
orderBy: orderProp">
{{phone.name}}
<p>{{phone.snippet}}</p>
</li>
</ul>
</body>
Creating Filter
• Custom filter cam be created using filter
method of Angular module
angular.module(
'phonecatFilters', []
).filter(’status',
filter_func);
Function Facts
• A function can be assigned to a variable
• A function can be defined within another function
• A function can return a function
function sqr(){
sq = function (x){
return x * x * x;
};
return sq;
}
My_sqr = sqr(); // function
My_sqr(3); // 27
@akshaymathu 27
Custom Filter
• Filter returns a function
– This function takes the value to be transformed as input
– Optionally other arguments can be taken
– Returns the transformed value as output
filter_func = function(){
return function(input){
return input ? ‘smart’: ‘dumb’
}
}
Complete Filter
Definition:
angular.module(
'phonecatFilters',
[]).filter(’status’, filter_func);
filter_func = function(){
return function(input){
return input ? ‘smart’: ‘dumb’;
}
});
Usage:
{{ phone_type | status }}
Question
• The filter is defined as a member of top level Angular
module named phonecatFilters
angular.module(
'phonecatFilters',
[]).filter(’status’, filter_func);
• How will this be available to the HTML template connected
to phonecatApp?
<html ng-app="phonecatApp">
var phonecatApp =
angular.module('phonecatApp’, []);
Dependency Injection
Object as Argument
• Objects can be passed to a function as an argument
• They proxy for named arguments
Say_hello = function (options){
if (typeof options === ‘Object’){
options.msg = (options.msg)?
options.msg : ’Hello!’;
}
alert(options.msg + ‘ ‘ + options.name);
}
Say_hello({name: ‘Akshay’});
@akshaymathu 32
Using Functions as Objects
• Functions are actually First Class objects
So we can change
User= {}
User.name = ‘Akshay’
User.greet = function(){
alert(‘Hello ’ + User.name)
}
to
User = function(){
this.name = ‘Akshay’
this.greet = function(){
alert(‘Hello ’ + this.name)
}
}
@akshaymathu 33
Creating Instances
• Now the object instance can be created using
new keyword
user1 = new User; user1.name
//Akshay user1.greet() //Hello
Akshay
@akshaymathu 34
Class Constructor
• The main object function can take arguments for
initializing properties
User = function(name){
this.name = name;
this.greet = function(){
alert(‘Hello ’ + this.name)
}
}
user1 = new User(‘Cerri’);
user1.greet() //Hello Cerri
@akshaymathu 35
Extending a Class
• More functions and properties can be defined
extending the prototype of the class
User.prototype.setGender =
function(gender){
this.gender = gender;
};
User.prototype.sayGender =
function(){
alert(this.name + ‘ is ’ +
this.gender);
};
@akshaymathu 36
What is Dependency Injection
• A software design pattern that deals with how
code gets hold of its dependencies
• The best option is that the dependency is
passed in to the function or the object where
it is needed
Passing Dependency
• If the dependency is simply handed to the component, it
removes the responsibility of locating the dependency
function SomeClass(greeter) {
this.greeter = greeter;
}
SomeClass.prototype.doSomething =
function(name) {
this.greeter.greet(name);
}
Injector
• To manage the responsibility of dependency
creation, each Angular application has an injector.
• The injector is a ‘service locator’ that is
responsible for construction and lookup of
dependencies.
• How does the injector know what service needs
to be injected?
How injector knows..
• Infer the name of dependencies from the
name of function arguments
function MyCtlr($scope,
greeter){}
• Pass to injector
MyCtlr.$inject = [‘$scope’,
‘greeter’]
Making the Filter Available
• While creating a module, other required
modules can be passed as dependency list
var phonecatApp =
angular.module('phonecatApp’,
[‘phonecatFilters’]);
{{ phone_type | status }}
Services
Angular Services
• What is a service?
– A system doing work for us
• Angular services are substitutable objects
– Wired together using dependency injection
• Angular services are:
– Lazily instantiated
– Singletons
Registering Custom Service
var myMod = angular.module('myMod', []);
myMod.factory('serviceId’, function() {
var shinyNewServiceInstance;
//factory function body that constructs
shinyNewServiceInstance
return shinyNewServiceInstance;
});
Built-in Services
• Angular provides built-in services for various
needs
– $filter: for formatting the data
– $window: for accessing window object
– $location: for parsing URL
– $timeout: a wrapper on setTimeout
– $http: for communicating with server using XHR or
JSONP
– …
Talking to Server
• A way in web browser to communicate with
server without reloading the page
• XmlHttpRequest (XHR) object can also create
HTTP request and receive response
– The request happens asynchronously
• Other operations on page are allowed during the
request
– Received data does not render automatically
• Data needs to be received in a callback function and
used programmatically
@akshaymathu 47
Asynchronous JavaScript & XML
AJAX Call in jQuery
$.ajax({
url: ‘/my_ajax_target’,
type: ‘POST’,
data: {id: 2},
success: function(response){
alert(‘Hello! ‘ + response.name);
},
error: function(){
alert(‘Please try later’);
}
});
@akshaymathu 48
AJAX Call in Angular
$http({
method: 'GET',
url: '/someUrl’,
params: {id: 2}
}
).success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
}
).error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
}
);
Shortcut Methods
• For HTTP methods:
– GET: $http.get('/someUrl’)
– POST: $http.post('/someUrl', data)
– PUT: $http.put
– DELETE: $http.delete
• For getting only headers
– $http.head
• For cross-domain JSON (JSONP) call
– $http.jsonp(’http://domain/Url’)

More Related Content

What's hot (20)

Angular js
Angular jsAngular js
Angular js
Manav Prasad
 
Angular Js Get Started - Complete Course
Angular Js Get Started - Complete CourseAngular Js Get Started - Complete Course
Angular Js Get Started - Complete Course
EPAM Systems
 
Angular js
Angular jsAngular js
Angular js
Dinusha Nandika
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
 
Introduction to Angularjs
Introduction to AngularjsIntroduction to Angularjs
Introduction to Angularjs
Manish Shekhawat
 
Angular js PPT
Angular js PPTAngular js PPT
Angular js PPT
Imtiyaz Ahmad Khan
 
Angular js 1.3 presentation for fed nov 2014
Angular js 1.3 presentation for fed   nov 2014Angular js 1.3 presentation for fed   nov 2014
Angular js 1.3 presentation for fed nov 2014
Sarah Hudson
 
The AngularJS way
The AngularJS wayThe AngularJS way
The AngularJS way
Boyan Mihaylov
 
Angularjs architecture
Angularjs architectureAngularjs architecture
Angularjs architecture
Michael He
 
AngularJS Basic Training
AngularJS Basic TrainingAngularJS Basic Training
AngularJS Basic Training
Cornel Stefanache
 
Step by Step - AngularJS
Step by Step - AngularJSStep by Step - AngularJS
Step by Step - AngularJS
Infragistics
 
Angular JS tutorial
Angular JS tutorialAngular JS tutorial
Angular JS tutorial
cncwebworld
 
Dynamic Application Development by NodeJS ,AngularJS with OrientDB
Dynamic Application Development by NodeJS ,AngularJS with OrientDBDynamic Application Development by NodeJS ,AngularJS with OrientDB
Dynamic Application Development by NodeJS ,AngularJS with OrientDB
Apaichon Punopas
 
AngularJS intro
AngularJS introAngularJS intro
AngularJS intro
dizabl
 
AngularJS Best Practices
AngularJS Best PracticesAngularJS Best Practices
AngularJS Best Practices
Narek Mamikonyan
 
Introduction of angular js
Introduction of angular jsIntroduction of angular js
Introduction of angular js
Tamer Solieman
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
Jussi Pohjolainen
 
AngularJS: an introduction
AngularJS: an introductionAngularJS: an introduction
AngularJS: an introduction
Luigi De Russis
 
AngularJs (1.x) Presentation
AngularJs (1.x) PresentationAngularJs (1.x) Presentation
AngularJs (1.x) Presentation
Raghubir Singh
 
Angular js presentation at Datacom
Angular js presentation at DatacomAngular js presentation at Datacom
Angular js presentation at Datacom
David Xi Peng Yang
 
Angular Js Get Started - Complete Course
Angular Js Get Started - Complete CourseAngular Js Get Started - Complete Course
Angular Js Get Started - Complete Course
EPAM Systems
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
 
Angular js 1.3 presentation for fed nov 2014
Angular js 1.3 presentation for fed   nov 2014Angular js 1.3 presentation for fed   nov 2014
Angular js 1.3 presentation for fed nov 2014
Sarah Hudson
 
Angularjs architecture
Angularjs architectureAngularjs architecture
Angularjs architecture
Michael He
 
Step by Step - AngularJS
Step by Step - AngularJSStep by Step - AngularJS
Step by Step - AngularJS
Infragistics
 
Angular JS tutorial
Angular JS tutorialAngular JS tutorial
Angular JS tutorial
cncwebworld
 
Dynamic Application Development by NodeJS ,AngularJS with OrientDB
Dynamic Application Development by NodeJS ,AngularJS with OrientDBDynamic Application Development by NodeJS ,AngularJS with OrientDB
Dynamic Application Development by NodeJS ,AngularJS with OrientDB
Apaichon Punopas
 
AngularJS intro
AngularJS introAngularJS intro
AngularJS intro
dizabl
 
Introduction of angular js
Introduction of angular jsIntroduction of angular js
Introduction of angular js
Tamer Solieman
 
AngularJS: an introduction
AngularJS: an introductionAngularJS: an introduction
AngularJS: an introduction
Luigi De Russis
 
AngularJs (1.x) Presentation
AngularJs (1.x) PresentationAngularJs (1.x) Presentation
AngularJs (1.x) Presentation
Raghubir Singh
 
Angular js presentation at Datacom
Angular js presentation at DatacomAngular js presentation at Datacom
Angular js presentation at Datacom
David Xi Peng Yang
 

Viewers also liked (20)

Why angular js Framework
Why angular js Framework Why angular js Framework
Why angular js Framework
Sakthi Bro
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
Eyal Vardi
 
Get satrted angular js
Get satrted angular jsGet satrted angular js
Get satrted angular js
Alexandre Marreiros
 
Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)
Aniruddha Chakrabarti
 
Write bulletproof trigger code
Write bulletproof trigger codeWrite bulletproof trigger code
Write bulletproof trigger code
Salesforce Developers
 
Understanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile ArchitecturesUnderstanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile Architectures
Salesforce Developers
 
Angular js best practice
Angular js best practiceAngular js best practice
Angular js best practice
Matteo Scandolo
 
Angular js
Angular jsAngular js
Angular js
ParmarAnisha
 
Git/Github & Salesforce
Git/Github & Salesforce Git/Github & Salesforce
Git/Github & Salesforce
Gordon Bockus
 
AngularJS + React
AngularJS + ReactAngularJS + React
AngularJS + React
justvamp
 
Design patterns through refactoring
Design patterns through refactoringDesign patterns through refactoring
Design patterns through refactoring
Ganesh Samarthyam
 
Combining Angular and React Together
Combining Angular and React TogetherCombining Angular and React Together
Combining Angular and React Together
Sebastian Pederiva
 
Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016
Mãi Mãi Yêu
 
Design Patterns in .Net
Design Patterns in .NetDesign Patterns in .Net
Design Patterns in .Net
Dmitri Nesteruk
 
Pieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React NativePieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React Native
tlv-ios-dev
 
Creational Design Patterns
Creational Design PatternsCreational Design Patterns
Creational Design Patterns
Jamie (Taka) Wang
 
Node js meetup
Node js meetupNode js meetup
Node js meetup
Ansuman Roy
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
Claude Tech
 
Multiorg Collaboration Using Salesforce S2S
Multiorg Collaboration Using Salesforce S2SMultiorg Collaboration Using Salesforce S2S
Multiorg Collaboration Using Salesforce S2S
Mayur Shintre
 
C#.net
C#.netC#.net
C#.net
vnboghani
 
Why angular js Framework
Why angular js Framework Why angular js Framework
Why angular js Framework
Sakthi Bro
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
Eyal Vardi
 
Understanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile ArchitecturesUnderstanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile Architectures
Salesforce Developers
 
Angular js best practice
Angular js best practiceAngular js best practice
Angular js best practice
Matteo Scandolo
 
Git/Github & Salesforce
Git/Github & Salesforce Git/Github & Salesforce
Git/Github & Salesforce
Gordon Bockus
 
AngularJS + React
AngularJS + ReactAngularJS + React
AngularJS + React
justvamp
 
Design patterns through refactoring
Design patterns through refactoringDesign patterns through refactoring
Design patterns through refactoring
Ganesh Samarthyam
 
Combining Angular and React Together
Combining Angular and React TogetherCombining Angular and React Together
Combining Angular and React Together
Sebastian Pederiva
 
Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016Kế hoạch thi HK2 2015-2016
Kế hoạch thi HK2 2015-2016
Mãi Mãi Yêu
 
Pieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React NativePieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React Native
tlv-ios-dev
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
Claude Tech
 
Multiorg Collaboration Using Salesforce S2S
Multiorg Collaboration Using Salesforce S2SMultiorg Collaboration Using Salesforce S2S
Multiorg Collaboration Using Salesforce S2S
Mayur Shintre
 
Ad

Similar to Getting Started with Angular JS (20)

Learning AngularJS - Complete coverage of AngularJS features and concepts
Learning AngularJS  - Complete coverage of AngularJS features and conceptsLearning AngularJS  - Complete coverage of AngularJS features and concepts
Learning AngularJS - Complete coverage of AngularJS features and concepts
Suresh Patidar
 
Angularjs
AngularjsAngularjs
Angularjs
Ynon Perek
 
AngularJS Workshop
AngularJS WorkshopAngularJS Workshop
AngularJS Workshop
Gianluca Cacace
 
Basics of AngularJS
Basics of AngularJSBasics of AngularJS
Basics of AngularJS
Filip Janevski
 
AngularJS best-practices
AngularJS best-practicesAngularJS best-practices
AngularJS best-practices
Henry Tao
 
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle StudiosAngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
Learnimtactics
 
AngularJS.part1
AngularJS.part1AngularJS.part1
AngularJS.part1
Andrey Kolodnitsky
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
Ravi Mone
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
murtazahaveliwala
 
Angular Presentation
Angular PresentationAngular Presentation
Angular Presentation
Adam Moore
 
Angular js for Beginnners
Angular js for BeginnnersAngular js for Beginnners
Angular js for Beginnners
Santosh Kumar Kar
 
Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)
kbekessy
 
Angular workshop - Full Development Guide
Angular workshop - Full Development GuideAngular workshop - Full Development Guide
Angular workshop - Full Development Guide
Nitin Giri
 
AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)
Abhishek Anand
 
ME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS FundamentalsME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS Fundamentals
Aviran Cohen
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014
Dariusz Kalbarczyk
 
Workshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte IWorkshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte I
Visual Engineering
 
Introduction to AngularJs
Introduction to AngularJsIntroduction to AngularJs
Introduction to AngularJs
murtazahaveliwala
 
Intro to AngularJs
Intro to AngularJsIntro to AngularJs
Intro to AngularJs
SolTech, Inc.
 
AngularJS
AngularJSAngularJS
AngularJS
Srivatsan Krishnamachari
 
Learning AngularJS - Complete coverage of AngularJS features and concepts
Learning AngularJS  - Complete coverage of AngularJS features and conceptsLearning AngularJS  - Complete coverage of AngularJS features and concepts
Learning AngularJS - Complete coverage of AngularJS features and concepts
Suresh Patidar
 
AngularJS best-practices
AngularJS best-practicesAngularJS best-practices
AngularJS best-practices
Henry Tao
 
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle StudiosAngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
Learnimtactics
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
Ravi Mone
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
murtazahaveliwala
 
Angular Presentation
Angular PresentationAngular Presentation
Angular Presentation
Adam Moore
 
Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)
kbekessy
 
Angular workshop - Full Development Guide
Angular workshop - Full Development GuideAngular workshop - Full Development Guide
Angular workshop - Full Development Guide
Nitin Giri
 
AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)
Abhishek Anand
 
ME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS FundamentalsME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS Fundamentals
Aviran Cohen
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014
Dariusz Kalbarczyk
 
Workshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte IWorkshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte I
Visual Engineering
 
Ad

More from Akshay Mathur (20)

Documentation with Sphinx
Documentation with SphinxDocumentation with Sphinx
Documentation with Sphinx
Akshay Mathur
 
Kubernetes Journey of a Large FinTech
Kubernetes Journey of a Large FinTechKubernetes Journey of a Large FinTech
Kubernetes Journey of a Large FinTech
Akshay Mathur
 
Security and Observability of Application Traffic in Kubernetes
Security and Observability of Application Traffic in KubernetesSecurity and Observability of Application Traffic in Kubernetes
Security and Observability of Application Traffic in Kubernetes
Akshay Mathur
 
Enhanced Security and Visibility for Microservices Applications
Enhanced Security and Visibility for Microservices ApplicationsEnhanced Security and Visibility for Microservices Applications
Enhanced Security and Visibility for Microservices Applications
Akshay Mathur
 
Considerations for East-West Traffic Security and Analytics for Kubernetes En...
Considerations for East-West Traffic Security and Analytics for Kubernetes En...Considerations for East-West Traffic Security and Analytics for Kubernetes En...
Considerations for East-West Traffic Security and Analytics for Kubernetes En...
Akshay Mathur
 
Kubernetes as Orchestrator for A10 Lightning Controller
Kubernetes as Orchestrator for A10 Lightning ControllerKubernetes as Orchestrator for A10 Lightning Controller
Kubernetes as Orchestrator for A10 Lightning Controller
Akshay Mathur
 
Cloud Bursting with A10 Lightning ADS
Cloud Bursting with A10 Lightning ADSCloud Bursting with A10 Lightning ADS
Cloud Bursting with A10 Lightning ADS
Akshay Mathur
 
Shared Security Responsibility Model of AWS
Shared Security Responsibility Model of AWSShared Security Responsibility Model of AWS
Shared Security Responsibility Model of AWS
Akshay Mathur
 
Techniques for scaling application with security and visibility in cloud
Techniques for scaling application with security and visibility in cloudTechniques for scaling application with security and visibility in cloud
Techniques for scaling application with security and visibility in cloud
Akshay Mathur
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
Akshay Mathur
 
Object Oriented Programing in JavaScript
Object Oriented Programing in JavaScriptObject Oriented Programing in JavaScript
Object Oriented Programing in JavaScript
Akshay Mathur
 
Releasing Software Without Testing Team
Releasing Software Without Testing TeamReleasing Software Without Testing Team
Releasing Software Without Testing Team
Akshay Mathur
 
Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQuery
Akshay Mathur
 
CoffeeScript
CoffeeScriptCoffeeScript
CoffeeScript
Akshay Mathur
 
Creating Single Page Web App using Backbone JS
Creating Single Page Web App using Backbone JSCreating Single Page Web App using Backbone JS
Creating Single Page Web App using Backbone JS
Akshay Mathur
 
Getting Started with Web
Getting Started with WebGetting Started with Web
Getting Started with Web
Akshay Mathur
 
Getting Started with Javascript
Getting Started with JavascriptGetting Started with Javascript
Getting Started with Javascript
Akshay Mathur
 
Using Google App Engine Python
Using Google App Engine PythonUsing Google App Engine Python
Using Google App Engine Python
Akshay Mathur
 
Working with GIT
Working with GITWorking with GIT
Working with GIT
Akshay Mathur
 
Testing Single Page Webapp
Testing Single Page WebappTesting Single Page Webapp
Testing Single Page Webapp
Akshay Mathur
 
Documentation with Sphinx
Documentation with SphinxDocumentation with Sphinx
Documentation with Sphinx
Akshay Mathur
 
Kubernetes Journey of a Large FinTech
Kubernetes Journey of a Large FinTechKubernetes Journey of a Large FinTech
Kubernetes Journey of a Large FinTech
Akshay Mathur
 
Security and Observability of Application Traffic in Kubernetes
Security and Observability of Application Traffic in KubernetesSecurity and Observability of Application Traffic in Kubernetes
Security and Observability of Application Traffic in Kubernetes
Akshay Mathur
 
Enhanced Security and Visibility for Microservices Applications
Enhanced Security and Visibility for Microservices ApplicationsEnhanced Security and Visibility for Microservices Applications
Enhanced Security and Visibility for Microservices Applications
Akshay Mathur
 
Considerations for East-West Traffic Security and Analytics for Kubernetes En...
Considerations for East-West Traffic Security and Analytics for Kubernetes En...Considerations for East-West Traffic Security and Analytics for Kubernetes En...
Considerations for East-West Traffic Security and Analytics for Kubernetes En...
Akshay Mathur
 
Kubernetes as Orchestrator for A10 Lightning Controller
Kubernetes as Orchestrator for A10 Lightning ControllerKubernetes as Orchestrator for A10 Lightning Controller
Kubernetes as Orchestrator for A10 Lightning Controller
Akshay Mathur
 
Cloud Bursting with A10 Lightning ADS
Cloud Bursting with A10 Lightning ADSCloud Bursting with A10 Lightning ADS
Cloud Bursting with A10 Lightning ADS
Akshay Mathur
 
Shared Security Responsibility Model of AWS
Shared Security Responsibility Model of AWSShared Security Responsibility Model of AWS
Shared Security Responsibility Model of AWS
Akshay Mathur
 
Techniques for scaling application with security and visibility in cloud
Techniques for scaling application with security and visibility in cloudTechniques for scaling application with security and visibility in cloud
Techniques for scaling application with security and visibility in cloud
Akshay Mathur
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
Akshay Mathur
 
Object Oriented Programing in JavaScript
Object Oriented Programing in JavaScriptObject Oriented Programing in JavaScript
Object Oriented Programing in JavaScript
Akshay Mathur
 
Releasing Software Without Testing Team
Releasing Software Without Testing TeamReleasing Software Without Testing Team
Releasing Software Without Testing Team
Akshay Mathur
 
Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQuery
Akshay Mathur
 
Creating Single Page Web App using Backbone JS
Creating Single Page Web App using Backbone JSCreating Single Page Web App using Backbone JS
Creating Single Page Web App using Backbone JS
Akshay Mathur
 
Getting Started with Web
Getting Started with WebGetting Started with Web
Getting Started with Web
Akshay Mathur
 
Getting Started with Javascript
Getting Started with JavascriptGetting Started with Javascript
Getting Started with Javascript
Akshay Mathur
 
Using Google App Engine Python
Using Google App Engine PythonUsing Google App Engine Python
Using Google App Engine Python
Akshay Mathur
 
Testing Single Page Webapp
Testing Single Page WebappTesting Single Page Webapp
Testing Single Page Webapp
Akshay Mathur
 

Recently uploaded (20)

Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
SheenBrisals
 
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink TemplateeeeeeeeeeeeeeeeeeeeeeeeeeNeuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
alexandernoetzold
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
Leveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer IntentsLeveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer Intents
Keheliya Gallaba
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Prachi Desai
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
AI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA TechnologiesAI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA Technologies
SandeepKS52
 
Design by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First DevelopmentDesign by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First Development
Par-Tec S.p.A.
 
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
Nacho Cougil
 
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-OffMicro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Tier1 app
 
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdfHow to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
victordsane
 
Content Mate Web App Triples Content Managers‘ Productivity
Content Mate Web App Triples Content Managers‘ ProductivityContent Mate Web App Triples Content Managers‘ Productivity
Content Mate Web App Triples Content Managers‘ Productivity
Alex Vladimirovich
 
Rebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core FoundationRebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core Foundation
Cadabra Studio
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
COBOL Programming with VSCode - IBM Certificate
COBOL Programming with VSCode - IBM CertificateCOBOL Programming with VSCode - IBM Certificate
COBOL Programming with VSCode - IBM Certificate
VICTOR MAESTRE RAMIREZ
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
SheenBrisals
 
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink TemplateeeeeeeeeeeeeeeeeeeeeeeeeeNeuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
alexandernoetzold
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
Leveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer IntentsLeveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer Intents
Keheliya Gallaba
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Prachi Desai
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
AI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA TechnologiesAI and Deep Learning with NVIDIA Technologies
AI and Deep Learning with NVIDIA Technologies
SandeepKS52
 
Design by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First DevelopmentDesign by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First Development
Par-Tec S.p.A.
 
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
Nacho Cougil
 
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-OffMicro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Tier1 app
 
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdfHow to purchase, license and subscribe to Microsoft Azure_PDF.pdf
How to purchase, license and subscribe to Microsoft Azure_PDF.pdf
victordsane
 
Content Mate Web App Triples Content Managers‘ Productivity
Content Mate Web App Triples Content Managers‘ ProductivityContent Mate Web App Triples Content Managers‘ Productivity
Content Mate Web App Triples Content Managers‘ Productivity
Alex Vladimirovich
 
Rebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core FoundationRebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core Foundation
Cadabra Studio
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
COBOL Programming with VSCode - IBM Certificate
COBOL Programming with VSCode - IBM CertificateCOBOL Programming with VSCode - IBM Certificate
COBOL Programming with VSCode - IBM Certificate
VICTOR MAESTRE RAMIREZ
 

Getting Started with Angular JS

  • 2. What is Angular • Browser-side MVC toolkit – For creating Single Page Web Apps – With less custom code • All in one JavaScript framework – Encapsulates many concepts within – jQuery may not be required • Resembles more with server side Frameworks
  • 3. Prerequisites • Advance JS objects and objects instances • Model, View, Controller and App objects • Data Bindings (one-way and two way) • Client-side templates • URL routing • Module definition • Module dependency • Asynchronous programing
  • 4. Custom HTML Attributes • To any HTML node, any arbitrary attribute can be added <div howdy=“I am fine”></div> • Browsers simply ignore such attributes • These attributes can be read by JavaScript
  • 5. Directives • Angular uses custom HTML attributes for its use – They call it directives • Angular script reads these directives and acts accordingly • HTML tags are also used as directives – Standard HTML tags with changed behavior – Custom HTML tags
  • 6. ng-app • The ng-app directive serves two purposes – Tells Angular about the root node for the application – Assigns witch app object (module) to use <html ng-app="phonecatApp"> <head> <script src=”angular.js"></script> </head> <body> … …</body> </html>
  • 7. Creating Angular Module • All modules (angular core or 3rd party) that should be available to an application must be registered • The angular.module is a global place for creating, registering and retrieving Angular modules angular.module(name, [requires], configFn);
  • 8. App Object • App may be used as the top level Angular Module – All other objects are defined as member of this object var phonecatApp = angular.module( 'phonecatApp', [] );
  • 9. The Phone Catalogue App • Nexus S Fast just got faster with Nexus S. • Motorola XOOM with Wi-Fi The Next, Next Generation tablet. <ul> <li> <span>Nexus S</span> <p> Fast just got faster with Nexus S. </p> </li> <li> <span>Motorola XOOM with Wi-Fi</span> <p> The Next, Next Generation tablet. </p> </li> </ul>
  • 10. HTML Templates • When similar HTML needs to be written for different content, templates are used • Template system allows to fill up data into templates – This is done via data binding expressions • The template system also allows for basic program constructs e.g. loops
  • 11. JavaScript Template System • Dynamically creates HTML code in JS – Data driven HTML – Allows variable substitution, looping and conditional statements • Generated HTML is inserted into the DOM for changing part of the page on-the-fly • Many libraries are available e.g. Handlebars, DustJS, Mustache, UnderscoreJS etc. – Angular has its own template system @akshaymathu 11
  • 12. View • Object that holds visual representation of the data • Provides methods for – Rendering the user interface – Handling the user interaction within the view • Angular uses template as view • The view gets its data from its Model – Each view has its own model @akshaymathu 12
  • 13. Model • Object that holds data in a structural form • Makes data available to view • Acts as a unit of data • By default Angular uses $scope object as model – Each view has its own model so the scope of $scope is limited to the view @akshaymathu 13
  • 14. Value Substitution • Values are passed to template using $scope object – Members of $scope can be used directly in template • Items in {{ }} are treated as variables and replaced by its values <li> <span>{{phone_name}}</span> <p>{{phone_desc}}</p> </li> @akshaymathu 14
  • 15. Looping • Looping is done using ng-repeat directive • Data passed to ng-repeat should be an Array <li ng-repeat="phone in phones"> <span>{{phone.name}}</span> <p>{{phone.desc}}</p> </li> @akshaymathu 15
  • 16. Controller • Object that acts as a glue to connects view and model • The ng-controller directive attaches controller to the view <ul ng-controller= "PhoneListCtrl"> <li> … …</li> </ul> @akshaymathu 16
  • 17. Passing Data to View • Controller method of the App Object creates a controller • Value of $scope is set in the controller phonecatApp.controller('PhoneListCtrl', function ($scope) { $scope.phones = [ {'name': 'Nexus S', ’desc': 'Fast just got faster'}, {'name': 'Motorola XOOM', ’desc': ’Next Generation tablet.’} ]; } );
  • 18. Everything Together: HTML <html ng-app="phonecatApp"> <head> <script src=”angular.js"></script> </head> <body> <ul ng-controller="PhoneListCtrl"> <li ng-repeat="phone in phones"> <span>{{phone.name}}</span> <p>{{phone.desc}}</p> </li> </ul> </body> </html> @akshaymathu 18
  • 19. Everything Together: JS var phonecatApp = angular.module('phonecatApp', []); phonecatApp.controller('PhoneListCtrl', function ($scope) { $scope.phones = [ {'name': 'Nexus S', ’desc': 'Fast just got faster'}, {'name': 'Motorola XOOM', ’desc': ’Next Generation tablet.’} ]; } );
  • 20. Reading from Form Elements • A model can be attached to form elements – AngularJS updates the attached Model as value in form element changes <input ng-model="query"> – AngularJS also updates the value of form element changes when the attached model is changed
  • 21. Data Bindings • Corresponding changes trigger as soon as data changes at one place • One way data binding – Template re-renders as data in $scope changes • Two way data binding – Value of form element and attached model always remain in sync
  • 22. Modifying Data • AngularJS provides a few readymade filter functions for achieving certain effect – Can be included within expressions in the template var val = 54.2 {{ val | number : 3}} // 54.200 • Option to write custom filters is available
  • 23. Formatting Filters • Number: Formats number {{ val | number : 3}} • Currency: Puts a currency identifier {{amount | currency: "USD"}} • Date: Formats date {{today | date: 'medium'}} • Lowercase/Uppercase {{’somestr’| uppercase}} • JSON: Formats JS object as string {{ {'name':'value'} | json }}
  • 24. Filtering Arrays • Limit: Picks limited number of items {{[1,2,3,4,5,6,7]| limitTo: 3 }} • Filter: Picks items based on condition {{[‘Bob’, ‘Mike’] | filter: ‘m’}} • Order: Orders the array of objects in a field {{[o1, o2] | orderBy: o1.f1}}
  • 25. Filtering Repeater <body> Search: <input ng-model="query"> Sort by: <select ng-model="orderProp"> <option value="name">Alphabetical</option> <option value="age">Newest</option> </select> <ul class="phones"> <li ng-repeat="phone in phones | filter: query | orderBy: orderProp"> {{phone.name}} <p>{{phone.snippet}}</p> </li> </ul> </body>
  • 26. Creating Filter • Custom filter cam be created using filter method of Angular module angular.module( 'phonecatFilters', [] ).filter(’status', filter_func);
  • 27. Function Facts • A function can be assigned to a variable • A function can be defined within another function • A function can return a function function sqr(){ sq = function (x){ return x * x * x; }; return sq; } My_sqr = sqr(); // function My_sqr(3); // 27 @akshaymathu 27
  • 28. Custom Filter • Filter returns a function – This function takes the value to be transformed as input – Optionally other arguments can be taken – Returns the transformed value as output filter_func = function(){ return function(input){ return input ? ‘smart’: ‘dumb’ } }
  • 29. Complete Filter Definition: angular.module( 'phonecatFilters', []).filter(’status’, filter_func); filter_func = function(){ return function(input){ return input ? ‘smart’: ‘dumb’; } }); Usage: {{ phone_type | status }}
  • 30. Question • The filter is defined as a member of top level Angular module named phonecatFilters angular.module( 'phonecatFilters', []).filter(’status’, filter_func); • How will this be available to the HTML template connected to phonecatApp? <html ng-app="phonecatApp"> var phonecatApp = angular.module('phonecatApp’, []);
  • 32. Object as Argument • Objects can be passed to a function as an argument • They proxy for named arguments Say_hello = function (options){ if (typeof options === ‘Object’){ options.msg = (options.msg)? options.msg : ’Hello!’; } alert(options.msg + ‘ ‘ + options.name); } Say_hello({name: ‘Akshay’}); @akshaymathu 32
  • 33. Using Functions as Objects • Functions are actually First Class objects So we can change User= {} User.name = ‘Akshay’ User.greet = function(){ alert(‘Hello ’ + User.name) } to User = function(){ this.name = ‘Akshay’ this.greet = function(){ alert(‘Hello ’ + this.name) } } @akshaymathu 33
  • 34. Creating Instances • Now the object instance can be created using new keyword user1 = new User; user1.name //Akshay user1.greet() //Hello Akshay @akshaymathu 34
  • 35. Class Constructor • The main object function can take arguments for initializing properties User = function(name){ this.name = name; this.greet = function(){ alert(‘Hello ’ + this.name) } } user1 = new User(‘Cerri’); user1.greet() //Hello Cerri @akshaymathu 35
  • 36. Extending a Class • More functions and properties can be defined extending the prototype of the class User.prototype.setGender = function(gender){ this.gender = gender; }; User.prototype.sayGender = function(){ alert(this.name + ‘ is ’ + this.gender); }; @akshaymathu 36
  • 37. What is Dependency Injection • A software design pattern that deals with how code gets hold of its dependencies • The best option is that the dependency is passed in to the function or the object where it is needed
  • 38. Passing Dependency • If the dependency is simply handed to the component, it removes the responsibility of locating the dependency function SomeClass(greeter) { this.greeter = greeter; } SomeClass.prototype.doSomething = function(name) { this.greeter.greet(name); }
  • 39. Injector • To manage the responsibility of dependency creation, each Angular application has an injector. • The injector is a ‘service locator’ that is responsible for construction and lookup of dependencies. • How does the injector know what service needs to be injected?
  • 40. How injector knows.. • Infer the name of dependencies from the name of function arguments function MyCtlr($scope, greeter){} • Pass to injector MyCtlr.$inject = [‘$scope’, ‘greeter’]
  • 41. Making the Filter Available • While creating a module, other required modules can be passed as dependency list var phonecatApp = angular.module('phonecatApp’, [‘phonecatFilters’]); {{ phone_type | status }}
  • 43. Angular Services • What is a service? – A system doing work for us • Angular services are substitutable objects – Wired together using dependency injection • Angular services are: – Lazily instantiated – Singletons
  • 44. Registering Custom Service var myMod = angular.module('myMod', []); myMod.factory('serviceId’, function() { var shinyNewServiceInstance; //factory function body that constructs shinyNewServiceInstance return shinyNewServiceInstance; });
  • 45. Built-in Services • Angular provides built-in services for various needs – $filter: for formatting the data – $window: for accessing window object – $location: for parsing URL – $timeout: a wrapper on setTimeout – $http: for communicating with server using XHR or JSONP – …
  • 47. • A way in web browser to communicate with server without reloading the page • XmlHttpRequest (XHR) object can also create HTTP request and receive response – The request happens asynchronously • Other operations on page are allowed during the request – Received data does not render automatically • Data needs to be received in a callback function and used programmatically @akshaymathu 47 Asynchronous JavaScript & XML
  • 48. AJAX Call in jQuery $.ajax({ url: ‘/my_ajax_target’, type: ‘POST’, data: {id: 2}, success: function(response){ alert(‘Hello! ‘ + response.name); }, error: function(){ alert(‘Please try later’); } }); @akshaymathu 48
  • 49. AJAX Call in Angular $http({ method: 'GET', url: '/someUrl’, params: {id: 2} } ).success(function(data, status, headers, config) { // this callback will be called asynchronously // when the response is available } ).error(function(data, status, headers, config) { // called asynchronously if an error occurs // or server returns response with an error status. } );
  • 50. Shortcut Methods • For HTTP methods: – GET: $http.get('/someUrl’) – POST: $http.post('/someUrl', data) – PUT: $http.put – DELETE: $http.delete • For getting only headers – $http.head • For cross-domain JSON (JSONP) call – $http.jsonp(’http://domain/Url’)