SlideShare a Scribd company logo
Copyright © 2014 by Software Craftsmanship Guild. 
All rights reserved. No part of these materials may be reproduced, 
distributed, or transmitted in any form or by any means, including 
photocopying, recording, or other electronic or mechanical methods, without 
the prior written permission of the Software Craftsmanship Guild. For 
permission requests, write to the Software Craftsmanship Guild, addressed 
“Attention: Permissions Coordinator,” at the address below. 
Software Craftsmanship Guild 
526 S. Main St, Suite 609 
Akron, OH 44311
AngularJS Fundamentals 
Software Craftsmanship Guild
Lesson Goals 
Learn about SPA (single page applications) and 
how Google’s AngularJS Framework can help 
with the complexity.
What is a SPA App? 
Single Page Applications are pages that contain 
multiple views that are shown and hidden 
dynamically based on events. 
SPAs do not do full postbacks to the server to fully 
reload pages. They request data via ajax in the 
background. 
Gmail is a good example of a complex SPA 
application.
SPA Challenges 
• DOM Manipulation 
• History 
• Module Loading 
• Routing 
• Caching 
• Object Modeling 
• Data Binding 
• Ajax/Promises 
• View Loading
AngularJS Features 
• Data Binding 
• MVC 
• Routing 
• Testing 
• View Models 
• Views 
• Controllers 
• jqLite 
• Templates 
• History 
• Factories 
• Directives 
• Services 
• Dependency Injection 
• Validation
Download AngularJS 
Go to angularjs.org and download the 
latest version. 
Place the file in the Scripts folder of an 
ASP.NET MVC web application. 
Don’t forget to right click -> properties, 
and unblock the file. 
You can also install it from nuget
Add angular to the layout 
Add angular to the bundleconfig.cs file 
and reference the bundle in the shared 
layout page.
Directives 
A directive is a way to wire up angular 
to html elements to extend their 
behavior. 
Angular directives by convention are 
named ng-* where * is the directive 
name. 
For a simple example, we’re going to 
add a ng-app directive to our row div 
and tag a text input with a ng-model 
directive called name. 
Then anywhere in our html we can use 
double braces {{ name }} to bind to the 
value of the textbox model. This is 
called a “data binding expression”
The ng-repeat Directive 
The ng-repeat directive instructs 
angular to repeat an html element for 
every item in a collection. 
Here we have initialized so data (ng-init 
creates default data on page load) 
and we want to loop through that 
array and create a list item for each 
element in the array. 
ng-repeat is very similar to a foreach 
loop. 
All directives are in the angularjs 
documentation: 
http://docs.angularjs.org/api/ng.direct 
ive:ngRepeat
Using Filters 
In a data binding expression, we can 
use the pipe character to use filters 
that are built into angularjs. 
Let’s say we have an array of friend 
objects. We can use filters to use the 
value of a text input to filter the list 
and perform other common tasks like 
ordering data. 
We can also put filters on data binding 
expressions. 
Try doing {{ friend.name | uppercase }} 
There is a list of filters in the 
documentation with examples.
Views, Controllers, and Scope 
So far we have been working only in views. Views 
contain all your formatting and data binding syntax. 
Controllers are intended to contain all your 
calculations and business logic. 
Scope, or $scope as angular calls it, is the transport 
object that shuttles information back and forth 
between the controller and view.
Creating a View and 
Controller 
In angular, a controller is just a 
function that takes a $scope as a 
parameter. 
AngularJS uses dependency injection 
to pass a scope in, which starts as 
empty and then we can add data to it. 
Notice the usage of the new ng-controller 
directive to bind the 
containing elements to fields on the 
SimpleController. 
We can have many controllers on a 
page and even chain controllers within 
elements, overwriting or inheriting 
fields. 
It is common to have different 
controllers for different parts of a view.
Modules and Routes 
Modules in AngularJS are responsible 
for configuring routes. 
Routes can register views and 
controllers for a given URL. 
Controllers often call out to factory or 
service classes to handle their CRUD 
operations. 
Modules contain all these things and 
are referenced by name in ng-app 
* Image from Dan Wahlin
Creating a Module 
The angular.module command creates 
a named module and allows for 
passing in an array of other modules if 
you want to build in complex 
dependencies. 
Now all we need to do is add the 
controller to the module and then 
reference demoApp as the ng-app. 
It’s typical to have many controllers in 
a module, particularly in a singe page 
application.
Handling Routes 
Routes allow our app to dynamically 
load different views into our page 
based on what the user does. 
In order to enable routing, we must 
download the angular-route.js files 
into our script folders (nuGet). 
We can then reference them in our 
bundle config below angularjs. 
Now when we declare our 
angular.module, we can pass in 
ngRoute as a dependency and 
configure the $routeProvider in the 
module .config method like so: 
Notice each route takes a controller 
and a templateUrl that points to an 
html file in our project.
Handling Routes – Adding 
Views Part 1 
Let’s make two views numbered 1 and 
2. (Terrible naming I know) 
View1 will be responsible for adding 
new players to our list, and View2 will 
just display players. 
Here is the code for view 1. Notice the 
link to View 2. We define route links in 
angular by starting them with a #. 
Also new is the ng-click directive 
where we have named a function 
called addPlayer() to be called when 
the button gets clicked. We should 
also add code to our controller to 
handle that.
Handling Routes – Adding Views Part 2 
The second view will be our standard filter text box with list of players.
Last Step 
Wherever in our page we decide to inject the views, we 
simply use the ng-view directive as a placeholder.
Re-use in Angular 
AngularJS can use Factories, Services, and 
Providers in order to share data between 
different controllers. 
There are minor differences between the three. 
We will look at Factories.
Setting up a Factory 
A factory can be added to a module 
using the .factory syntax. 
We simply give a name to our factory 
and then embed all of our data calls 
into it. 
Then any controller that is registered 
with our module can call any of the 
factory methods so long as the factory 
is injected into the controller function 
as a parameter. 
You can even inject factories into other 
factories!
Upgrading our Factory to 
use Ajax 
Angular has a built-in $http object that 
handles all of the http verbs. We are 
going to set up a WebAPI controller to 
return our player list as a JSON string 
to be parsed on the client. 
First, add an empty WebAPI controller. 
If we didn’t check the WebAPI box 
before, we’ll have to make a slight 
modification to our global.asax file. 
Add using Sytem.Web.Http; 
Above the 
RouteConfig.RegisterRoutes() method 
put the following method call: 
GlobalConfiguration.Configure(WebAp 
iConfig.Register);
Create the Ajax View 
We will now add a new controller 
action to our home controller called 
Ajax(). The code will be similar to our 
other pages- we will use a module and 
a factory. 
The difference is that we will make a 
call to $http.get to the Web API URL of 
the Player controller (/api/player/) 
$http.get returns data to the .success 
method if successful, and .error if not, 
otherwise the rest of our binding code 
remains the same.
Posting Data 
Posting data is very similar, and 
angular does most of the heavy lifting 
for converting your object to JSON 
format, which WebAPI handles out of 
the box. 
Simply: 
1. Add a post method to the WebAPI 
and the angular factory that takes 
a player object. 
2. Add a form with two fields and a 
button. 
3. Bind them to a newPlayer object 
in the scope. 
4. Create a function to do the post 
and bind it to the button click 
Happy binding!

More Related Content

PDF
Get rid of controllers in angular 1.5.x start using component directives
Marios Fakiolas
 
PPT
Angular App Presentation
Elizabeth Long
 
PPTX
Angular 9
Raja Vishnu
 
PPTX
Dive into Angular, part 4: Angular 2.0
Oleksii Prohonnyi
 
PPTX
Angular 5
Bartłomiej Narożnik
 
PDF
Web components are the future of the web - Take advantage of new web technolo...
Marios Fakiolas
 
PDF
Angular from Scratch
Christian Lilley
 
PDF
AngularJS - Services
Nir Kaufman
 
Get rid of controllers in angular 1.5.x start using component directives
Marios Fakiolas
 
Angular App Presentation
Elizabeth Long
 
Angular 9
Raja Vishnu
 
Dive into Angular, part 4: Angular 2.0
Oleksii Prohonnyi
 
Web components are the future of the web - Take advantage of new web technolo...
Marios Fakiolas
 
Angular from Scratch
Christian Lilley
 
AngularJS - Services
Nir Kaufman
 

What's hot (20)

PPSX
Angular 4 fronts
badal dubla
 
PDF
Adding User Management to Node.js
Dev_Events
 
PDF
A gently introduction to AngularJS
Gregor Woiwode
 
PDF
Full Angular 7 Firebase Authentication System
Digamber Singh
 
PPTX
Angular 9 New features
Ahmed Bouchefra
 
PDF
Angular 4 for Java Developers
Yakov Fain
 
PDF
Data Flow Patterns in Angular 2 - Sebastian Müller
Sebastian Holstein
 
PPTX
Dive into Angular, part 1: Introduction
Oleksii Prohonnyi
 
PDF
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...
Katy Slemon
 
PDF
AngularJS in practice
Eugene Fidelin
 
PDF
Understanding router state in angular 7 passing data through angular router s...
Katy Slemon
 
PDF
Angular js
Knoldus Inc.
 
PDF
Top 7 Angular Best Practices to Organize Your Angular App
Katy Slemon
 
PPTX
Angular 4 Introduction Tutorial
Scott Lee
 
PDF
Angular Best Practices - Perfomatix
Perfomatix Solutions
 
PPTX
Intoduction to Angularjs
Gaurav Agrawal
 
PPTX
AngularJS Introduction (Talk given on Aug 5 2013)
Abhishek Anand
 
PPTX
Lecture 32
Jannat Khan
 
PPTX
Dive into Angular, part 3: Performance
Oleksii Prohonnyi
 
PPTX
AngularJs presentation
Phan Tuan
 
Angular 4 fronts
badal dubla
 
Adding User Management to Node.js
Dev_Events
 
A gently introduction to AngularJS
Gregor Woiwode
 
Full Angular 7 Firebase Authentication System
Digamber Singh
 
Angular 9 New features
Ahmed Bouchefra
 
Angular 4 for Java Developers
Yakov Fain
 
Data Flow Patterns in Angular 2 - Sebastian Müller
Sebastian Holstein
 
Dive into Angular, part 1: Introduction
Oleksii Prohonnyi
 
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...
Katy Slemon
 
AngularJS in practice
Eugene Fidelin
 
Understanding router state in angular 7 passing data through angular router s...
Katy Slemon
 
Angular js
Knoldus Inc.
 
Top 7 Angular Best Practices to Organize Your Angular App
Katy Slemon
 
Angular 4 Introduction Tutorial
Scott Lee
 
Angular Best Practices - Perfomatix
Perfomatix Solutions
 
Intoduction to Angularjs
Gaurav Agrawal
 
AngularJS Introduction (Talk given on Aug 5 2013)
Abhishek Anand
 
Lecture 32
Jannat Khan
 
Dive into Angular, part 3: Performance
Oleksii Prohonnyi
 
AngularJs presentation
Phan Tuan
 
Ad

Viewers also liked (14)

PPTX
AngularJS Internal
Eyal Vardi
 
PPTX
AngularJS One Day Workshop
Shyam Seshadri
 
PPTX
AngularJS Architecture
Eyal Vardi
 
PPTX
Question 4
Shan3009
 
PPTX
Code for Nara 紹介
康司 石塚
 
PDF
Rupicon 2014 useful design patterns in rails
rupicon
 
PDF
Яндекс.Украина "Яндекс.Метрика"
awgua
 
PPT
Oración celebración domund 2016
ildefonso casas
 
PPT
Restaurant busser kpi
diretjom
 
PPTX
10 different vft ideas
Angela Plut
 
DOCX
Photography plan
DarcyB16
 
PPTX
Everybody Counts: Learnings from data disaggregated by disabilities (DDD) pil...
Sightsavers
 
PPTX
Мобильная коммерция: кому, когда и зачем
awgua
 
PPTX
Presentase PPKN
Fitria Syafa'ah
 
AngularJS Internal
Eyal Vardi
 
AngularJS One Day Workshop
Shyam Seshadri
 
AngularJS Architecture
Eyal Vardi
 
Question 4
Shan3009
 
Code for Nara 紹介
康司 石塚
 
Rupicon 2014 useful design patterns in rails
rupicon
 
Яндекс.Украина "Яндекс.Метрика"
awgua
 
Oración celebración domund 2016
ildefonso casas
 
Restaurant busser kpi
diretjom
 
10 different vft ideas
Angela Plut
 
Photography plan
DarcyB16
 
Everybody Counts: Learnings from data disaggregated by disabilities (DDD) pil...
Sightsavers
 
Мобильная коммерция: кому, когда и зачем
awgua
 
Presentase PPKN
Fitria Syafa'ah
 
Ad

Similar to AngularJS Fundamentals + WebAPI (20)

PDF
Angular Project Report
Kodexhub
 
DOCX
Angular js getting started
Hemant Mali
 
PDF
AngularJS Basics
Ravi Mone
 
PDF
Angular Interview Questions-PDF.pdf
JohnLeo57
 
PPTX
UQ21CA642BA1-Unit-3-WAF-Class18-Introduction to Angular Routing.pptx
TamalDey28
 
PDF
AngularJS By Vipin
Vipin Mundayad
 
PPTX
Angular js 1.3 presentation for fed nov 2014
Sarah Hudson
 
PDF
Angular js interview question answer for fresher
Ravi Bhadauria
 
PDF
One Weekend With AngularJS
Yashobanta Bai
 
PPT
introduction to Angularjs basics
Ravindra K
 
DOCX
AngularJS
Ermir Hoxhaj
 
PPTX
Angular Js Get Started - Complete Course
EPAM Systems
 
PPTX
Introduction to AngularJS
Shyjal Raazi
 
PPTX
Angular Javascript Tutorial with command
ssuser42b933
 
PPSX
Angular js
Arun Somu Panneerselvam
 
PPTX
Starting with angular js
jagriti srivastava
 
PPTX
Angular Framework ppt for beginners and advanced
Preetha Ganapathi
 
PDF
AngularJS Beginner Day One
Troy Miles
 
PPTX
Angular 6 Training with project in hyderabad india
php2ranjan
 
Angular Project Report
Kodexhub
 
Angular js getting started
Hemant Mali
 
AngularJS Basics
Ravi Mone
 
Angular Interview Questions-PDF.pdf
JohnLeo57
 
UQ21CA642BA1-Unit-3-WAF-Class18-Introduction to Angular Routing.pptx
TamalDey28
 
AngularJS By Vipin
Vipin Mundayad
 
Angular js 1.3 presentation for fed nov 2014
Sarah Hudson
 
Angular js interview question answer for fresher
Ravi Bhadauria
 
One Weekend With AngularJS
Yashobanta Bai
 
introduction to Angularjs basics
Ravindra K
 
AngularJS
Ermir Hoxhaj
 
Angular Js Get Started - Complete Course
EPAM Systems
 
Introduction to AngularJS
Shyjal Raazi
 
Angular Javascript Tutorial with command
ssuser42b933
 
Starting with angular js
jagriti srivastava
 
Angular Framework ppt for beginners and advanced
Preetha Ganapathi
 
AngularJS Beginner Day One
Troy Miles
 
Angular 6 Training with project in hyderabad india
php2ranjan
 

Recently uploaded (20)

PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPT
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Software Development Company | KodekX
KodekX
 
PDF
Beyond Automation: The Role of IoT Sensor Integration in Next-Gen Industries
Rejig Digital
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
This slide provides an overview Technology
mineshkharadi333
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Architecture of the Future (09152021)
EdwardMeyman
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Software Development Company | KodekX
KodekX
 
Beyond Automation: The Role of IoT Sensor Integration in Next-Gen Industries
Rejig Digital
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Doc9.....................................
SofiaCollazos
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
This slide provides an overview Technology
mineshkharadi333
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Architecture of the Future (09152021)
EdwardMeyman
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 

AngularJS Fundamentals + WebAPI

  • 1. Copyright © 2014 by Software Craftsmanship Guild. All rights reserved. No part of these materials may be reproduced, distributed, or transmitted in any form or by any means, including photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the Software Craftsmanship Guild. For permission requests, write to the Software Craftsmanship Guild, addressed “Attention: Permissions Coordinator,” at the address below. Software Craftsmanship Guild 526 S. Main St, Suite 609 Akron, OH 44311
  • 2. AngularJS Fundamentals Software Craftsmanship Guild
  • 3. Lesson Goals Learn about SPA (single page applications) and how Google’s AngularJS Framework can help with the complexity.
  • 4. What is a SPA App? Single Page Applications are pages that contain multiple views that are shown and hidden dynamically based on events. SPAs do not do full postbacks to the server to fully reload pages. They request data via ajax in the background. Gmail is a good example of a complex SPA application.
  • 5. SPA Challenges • DOM Manipulation • History • Module Loading • Routing • Caching • Object Modeling • Data Binding • Ajax/Promises • View Loading
  • 6. AngularJS Features • Data Binding • MVC • Routing • Testing • View Models • Views • Controllers • jqLite • Templates • History • Factories • Directives • Services • Dependency Injection • Validation
  • 7. Download AngularJS Go to angularjs.org and download the latest version. Place the file in the Scripts folder of an ASP.NET MVC web application. Don’t forget to right click -> properties, and unblock the file. You can also install it from nuget
  • 8. Add angular to the layout Add angular to the bundleconfig.cs file and reference the bundle in the shared layout page.
  • 9. Directives A directive is a way to wire up angular to html elements to extend their behavior. Angular directives by convention are named ng-* where * is the directive name. For a simple example, we’re going to add a ng-app directive to our row div and tag a text input with a ng-model directive called name. Then anywhere in our html we can use double braces {{ name }} to bind to the value of the textbox model. This is called a “data binding expression”
  • 10. The ng-repeat Directive The ng-repeat directive instructs angular to repeat an html element for every item in a collection. Here we have initialized so data (ng-init creates default data on page load) and we want to loop through that array and create a list item for each element in the array. ng-repeat is very similar to a foreach loop. All directives are in the angularjs documentation: http://docs.angularjs.org/api/ng.direct ive:ngRepeat
  • 11. Using Filters In a data binding expression, we can use the pipe character to use filters that are built into angularjs. Let’s say we have an array of friend objects. We can use filters to use the value of a text input to filter the list and perform other common tasks like ordering data. We can also put filters on data binding expressions. Try doing {{ friend.name | uppercase }} There is a list of filters in the documentation with examples.
  • 12. Views, Controllers, and Scope So far we have been working only in views. Views contain all your formatting and data binding syntax. Controllers are intended to contain all your calculations and business logic. Scope, or $scope as angular calls it, is the transport object that shuttles information back and forth between the controller and view.
  • 13. Creating a View and Controller In angular, a controller is just a function that takes a $scope as a parameter. AngularJS uses dependency injection to pass a scope in, which starts as empty and then we can add data to it. Notice the usage of the new ng-controller directive to bind the containing elements to fields on the SimpleController. We can have many controllers on a page and even chain controllers within elements, overwriting or inheriting fields. It is common to have different controllers for different parts of a view.
  • 14. Modules and Routes Modules in AngularJS are responsible for configuring routes. Routes can register views and controllers for a given URL. Controllers often call out to factory or service classes to handle their CRUD operations. Modules contain all these things and are referenced by name in ng-app * Image from Dan Wahlin
  • 15. Creating a Module The angular.module command creates a named module and allows for passing in an array of other modules if you want to build in complex dependencies. Now all we need to do is add the controller to the module and then reference demoApp as the ng-app. It’s typical to have many controllers in a module, particularly in a singe page application.
  • 16. Handling Routes Routes allow our app to dynamically load different views into our page based on what the user does. In order to enable routing, we must download the angular-route.js files into our script folders (nuGet). We can then reference them in our bundle config below angularjs. Now when we declare our angular.module, we can pass in ngRoute as a dependency and configure the $routeProvider in the module .config method like so: Notice each route takes a controller and a templateUrl that points to an html file in our project.
  • 17. Handling Routes – Adding Views Part 1 Let’s make two views numbered 1 and 2. (Terrible naming I know) View1 will be responsible for adding new players to our list, and View2 will just display players. Here is the code for view 1. Notice the link to View 2. We define route links in angular by starting them with a #. Also new is the ng-click directive where we have named a function called addPlayer() to be called when the button gets clicked. We should also add code to our controller to handle that.
  • 18. Handling Routes – Adding Views Part 2 The second view will be our standard filter text box with list of players.
  • 19. Last Step Wherever in our page we decide to inject the views, we simply use the ng-view directive as a placeholder.
  • 20. Re-use in Angular AngularJS can use Factories, Services, and Providers in order to share data between different controllers. There are minor differences between the three. We will look at Factories.
  • 21. Setting up a Factory A factory can be added to a module using the .factory syntax. We simply give a name to our factory and then embed all of our data calls into it. Then any controller that is registered with our module can call any of the factory methods so long as the factory is injected into the controller function as a parameter. You can even inject factories into other factories!
  • 22. Upgrading our Factory to use Ajax Angular has a built-in $http object that handles all of the http verbs. We are going to set up a WebAPI controller to return our player list as a JSON string to be parsed on the client. First, add an empty WebAPI controller. If we didn’t check the WebAPI box before, we’ll have to make a slight modification to our global.asax file. Add using Sytem.Web.Http; Above the RouteConfig.RegisterRoutes() method put the following method call: GlobalConfiguration.Configure(WebAp iConfig.Register);
  • 23. Create the Ajax View We will now add a new controller action to our home controller called Ajax(). The code will be similar to our other pages- we will use a module and a factory. The difference is that we will make a call to $http.get to the Web API URL of the Player controller (/api/player/) $http.get returns data to the .success method if successful, and .error if not, otherwise the rest of our binding code remains the same.
  • 24. Posting Data Posting data is very similar, and angular does most of the heavy lifting for converting your object to JSON format, which WebAPI handles out of the box. Simply: 1. Add a post method to the WebAPI and the angular factory that takes a player object. 2. Add a form with two fields and a button. 3. Bind them to a newPlayer object in the scope. 4. Create a function to do the post and bind it to the button click Happy binding!