AngularJS AN INTRODUCTION. Introduction to the AngularJS framework

Similar documents
AngularJS. Beginner's guide - part 2

AngularJS. Beginner's guide - part 1

AngularJS Introduction

Nagaraju Bende

What is AngularJS. à Javascript Framework à MVC à for Rich Web Application Development à by Google

Getting Started with

Single Page Applications

3 Days Training Program

AngularJS Fundamentals

Financial. AngularJS. AngularJS. Download Full Version :

Financial. AngularJS. AngularJS.

Tim Roes. Android- & inovex in Karlsruhe. GDG Karlsruhe Co-Organizer.

Prototyping a Social Network. AngularJS: Firebase integration with AngularFire

ANGULARJS INTERVIEW QUESTIONS

ANGULARJS - MOCK TEST ANGULARJS MOCK TEST II

User Interaction: jquery

a Very Short Introduction to AngularJS

Frontend Frameworks. SWE 432, Fall 2016 Design and Implementation of Software for the Web

Comprehensive AngularJS Programming (5 Days)

Front End Programming

Introduction to AngularJS

AJAX ASYNCHRONOUS JAVASCRIPT AND XML. Laura Farinetti - DAUIN

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML

Module 5 JavaScript, AJAX, and jquery. Module 5. Module 5 Contains an Individual and Group component

Web Architecture AN OVERVIEW

Design and Implementation of Single Page Application Based on AngularJS

Angular 2 Programming

MEAN Stack. 1. Introduction. 2. Foundation a. The Node.js framework b. Installing Node.js c. Using Node.js to execute scripts

Modern and Responsive Mobile-enabled Web Applications

Anatomy of an HTML document

IN4MATX 133: User Interface Software

Module 5 JavaScript, AJAX, and jquery. Module 5. Module 5 Contains 2 components

ngphotos (Grails + AngularJS)

Web Application Development

CodeValue. C ollege. Prerequisites: Basic knowledge of web development and especially JavaScript.

Understanding Angular Directives By Jeffry Houser

Introduction and first application. Luigi De Russis. Rails 101

"Charting the Course... Comprehensive Angular. Course Summary

Templates and Databinding. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Lab 1 - Introduction to Angular

Controller/server communication

Web Site Design and Development. CS 0134 Fall 2018 Tues and Thurs 1:00 2:15PM

Introduction to. Angular. Prof. Dr.-Ing. Thomas Wiedemann.

CS142 Winter 2017 Midterm Grading Solutions and Rubric

Understanding this structure is pretty straightforward, but nonetheless crucial to working with HTML, CSS, and JavaScript.

Building Web Applications

Simple AngularJS thanks to Best Practices

Python INTERMEDIATE. Rapid prototyping using Python libraries and integration with local and remote services

This course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery.

Controller/server communication

Angular 4 Training Course Content

Sample CS 142 Midterm Examination

Make a Website. A complex guide to building a website through continuing the fundamentals of HTML & CSS. Created by Michael Parekh 1

THE HITCHHIKERS GUIDE TO. Harper Maddox CTO, EdgeTheory 30 September 2014

About Me. Name: Jonathan Brown. Job: Full Stack Web Developer. Experience: Almost 3 years of experience in WordPress development

AngularJS Intro Homework

Full Stack Web Developer

JavaScript Specialist v2.0 Exam 1D0-735

Questions and Answers from Lukas Ruebbelke s AngularJS In-Depth Course

Table of Contents. Introduction 1. 1 Jumping Into JavaScript 5. for Loops 17

Ajax- XMLHttpResponse. Returns a value such as ArrayBuffer, Blob, Document, JavaScript object, or a DOMString, based on the value of

Course Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL:

JavaScript Framework: AngularJS

DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE

Lazy Loading Techniques

The DOM and jquery functions and selectors. Lesson 3


The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.

CS 498RK FALL RESTFUL APIs

Comprehensive Angular 2 Review of Day 3

Uniform Resource Locators (URL)

Single Page Applications using AngularJS

Creating Effective Websites using AngularJS

Building JSR-286 portlets using AngularJS and IBM Web Experience Factory

HTML DOM IN ANGULARJS

STARCOUNTER. Technical Overview

Project Title REPRESENTATION OF ELECTRICAL NETWORK USING GOOGLE MAP API. Submitted by: Submitted to: SEMANTA RAJ NEUPANE, Research Assistant,

jquery and AJAX

Events & Callbacks (ESaaS 6.5)! 2013 Armando Fox & David Patterson, all rights reserved

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148

Ten interesting features of Google s Angular Project

HTML + CSS. ScottyLabs WDW. Overview HTML Tags CSS Properties Resources

Web Programming Step by Step

HTML 5 and CSS 3, Illustrated Complete. Unit L: Programming Web Pages with JavaScript

Future Web App Technologies

AngularJS Examples pdf

AJAX: The Basics CISC 282 November 22, 2017

JavaScript CS 4640 Programming Languages for Web Applications

AJAX: The Basics CISC 282 March 25, 2014

Manual Html A Href Onclick Submit Form

Vue.js Framework. Internet Engineering. Spring Pooya Parsa Professor: Bahador Bakhshi CE & IT Department, Amirkabir University of Technology

<angular/> JavaScript Done Right

Static Webpage Development

welcome to BOILERCAMP HOW TO WEB DEV

A conditional statement can compare two values. Here we check if one variable we declared is greater than another. It is true so the code executes.

IN Development in Platform Ecosystems Lecture 2: HTML, CSS, JavaScript

Web Technologies II + Project Management for Web Applications

Web development using PHP & MySQL with HTML5, CSS, JavaScript

E ECMAScript, 21 elements collection, HTML, 30 31, 31. Index 161

Client Side JavaScript and AJAX

Transcription:

AngularJS AN INTRODUCTION Introduction to the AngularJS framework

AngularJS Javascript framework for writing frontend web apps DOM manipulation, input validation, server communication, URL management, etc. Inspired by the Model-View-Controller pattern HTML templating approach with two-way binding Focus on supporting large and single page applications modules, reusable components, etc. Widely used a major rewrite is coming out (version 2) we will use version 1.x 22/04/2016 AngularJS: an introduction 2

AngularJS See: Background section Javascript framework for writing frontend web apps DOM manipulation, input validation, server communication, URL management, etc. Inspired by the Model-View-Controller pattern HTML templating approach with two-way binding Focus on supporting large and single page applications modules, reusable components, etc. Widely used a major rewrite is coming out (version 2) we will use version 1.x 22/04/2016 AngularJS: an introduction 3

AngularJS Developed by Google Website: https://angularjs.org/ download version 1.x Included in our starter kit https://github.com/sonet-2016/starter-kit 22/04/2016 AngularJS: an introduction 4

Concepts and Terminology Template Directive Scope Compiler Data Binding Dependency Injection Module Service HTML with additional markup used to describe what should be displayed Allows a developer to extend HTML with her own elements and attributes Context where the model data is stored so that templates and controllers can access Processes the template to generate HTML for the browser Syncing of data between the Scope and the HTML (two-way) Fetching and setting up all the functionality needed by a component A container for parts of an application Reusable functionality available for any view 22/04/2016 AngularJS: an introduction 5

<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="utf-8"> <title>what's your name?</title> </head> <body> <div> <label>name</label> <input type="text" ng-model="name" placeholder="enter your name"> <h1>hello {{ name }}!</h1> </div> <script src="./angular.min.js"></script> </body> </html> Example 1 22/04/2016 AngularJS: an introduction 6

<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="utf-8"> <title>what's your name?</title> </head> <body> <div> <label>name</label> <input type="text" ng-model="name" placeholder="enter your name"> <h1>hello {{ name }}!</h1> </div> <script src="./angular.min.js"></script> </body> </html> script loads and runs when the browser signals that the context is ready 22/04/2016 AngularJS: an introduction 7

<!DOCTYPE html> <html lang="en" ng-app> Angular scans the HTML <head> looking for the ng-app <meta charset="utf-8"> attribute. It creates a scope. <title>what's your name?</title> </head> <body> <div> <label>name</label> <input type="text" ng-model="name" placeholder="enter your name"> <h1>hello {{ name }}!</h1> </div> <script src="./angular.min.js"></script> </body> </html> 22/04/2016 AngularJS: an introduction 8

<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="utf-8"> <title>what's your name?</title> </head> <body> <div> <label>name</label> <input type="text" ng-model="name" placeholder="enter your name"> <h1>hello {{ name }}!</h1> </div> <script src="./angular.min.js"></script> </body> </html> The compiler scans the DOM for templating markups. Then, it fills them with info from the scope. 22/04/2016 AngularJS: an introduction 9

<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="utf-8"> <title>what's your name?</title> </head> <body> Two-way binding <div> <label>name</label> <input type="text" ng-model="name" placeholder="enter your name"> <h1>hello {{ name }}!</h1> </div> <script src="./angular.min.js"></script> </body> </html> name is replaced with the value inserted in the <input> 22/04/2016 AngularJS: an introduction 10

Directives and Data Binding Directives markers on a DOM element that tell Angular s HTML compiler to attach a specific behavior to that element <html lang="en" ng-app> <input type="text" ng-model="name" > Data Binding the automatic synchronization of data between the model and the view components {{ name }} 22/04/2016 AngularJS: an introduction 11

Other Built-in Directives ng-src ng-href delay <img> src <a> href interpretation to get handled by Angular ng-repeat instantiate a template once per item from a collection <div data-ng-init="names = ['Luigi', 'Laura', 'Teo', 'Gabriella']"> <h3>loop through names with ng-repeat</h3> <ul> <li ng-repeat="name in names">{{ name }}</li> </ul> </div> Example 2 22/04/2016 AngularJS: an introduction 12

Other Built-in Directives ng-show/ng-hide show/hide DOM elements according to a given expression ng-if include an element in the DOM if the subsequent expression is true ng-click Angular version of HTML s onclick execute a given operation when the element is clicked 22/04/2016 AngularJS: an introduction 13

Filters Formats the value of an expression for display to the user {{ name uppercase }} Keeps formatting into the presentation Syntax {{ expression filter }} {{ expression filter1 filter2 }} {{ expression filter:argument }} 22/04/2016 AngularJS: an introduction 14

Controllers A controller should be concerned only! - with consuming data, preparing it for the view, and transmitting it to service for processing Best practices services are responsible to hold the model and communicate with a server declarations should manipulate the DOM views do not have to know about their controller a controller definitely does not want to know about its view 22/04/2016 AngularJS: an introduction 15

Controllers A JavaScript function It defines a new $scope that may contain data (properties) specify some behaviors (methods) It should contain only the logic needed for a single view i.e., each view should have one controller (and viceversa) 22/04/2016 AngularJS: an introduction 16

<!DOCTYPE html> <html lang="en" ng-app="sonetexample" > <head> <meta charset="utf-8"> <title>introducing... Controllers!</title> </head> <body ng-controller="myctrl"> <div> <label>name</label> <input type="text" ng-model="name"...> <h1>{{ greeting }} {{name}}!</h1> </div> [...] module controller HTML angular.module("sonetexample", []).controller('myctrl', function ($scope) { $scope.name = ""; $scope.greeting = "Ciao"; }) JS Example 3 22/04/2016 AngularJS: an introduction 17

Modules Container to collect and organize components in a modular way Multiple modules can exist in an application main module (ng-app) service modules, controller modules, etc. Best practices a module for each feature a module for each reusable component (especially directives and filters) an application level module which depends on the above modules and contains any initialization code 22/04/2016 AngularJS: an introduction 18

The Scope ($scope) The glue between a controller and a template An execution context for expressions like {{ pizza.name }} Scopes are arranged in a hierarchical structure that mimic the DOM structure of the application Scopes can watch expressions and propagate events $rootscope every application has ONE root scope, all other scopes are its descendant 22/04/2016 AngularJS: an introduction 19

Routing Single page applications need routing to mimic static addresses (http://mysite.com/...) to manage browser history Goal: load different views into the single page app 22/04/2016 AngularJS: an introduction 20

ngroute Angular API for routing Provides a directive to indicate where view component should be inserted in the template (ngview) a service that watches window.location for changes and updates the displayed view ($route) a configuration that allows the user to specify the URL to be used for a specific view ($routeprovider) It is located in a dedicated js file not in angular.(min).js 22/04/2016 AngularJS: an introduction 21

Using ngroute In a template <div ng-view></div> In your Angular module, add ngroute as a dependency angular.module('sonetexample', [ngroute]) Configure the routing table in a config block.config(['$routeprovider', function($routeprovider) { }]) Example 4 22/04/2016 AngularJS: an introduction 22

Passing parameters in URLs URLs: #/pizzas/my-pizza #/pizzas/another-pizza Routing table configuration:.config(['$routeprovider', function ($routeprovider){ $routeprovider.when('/pizzas/:pizzaid', { templateurl: 'single-pizza.html', controller: 'PizzaCtrl', }) [...] }]) JS 22/04/2016 AngularJS: an introduction 23

Passing parameters in URLs Controller:.controller('PizzaCtrl', ['$routeparams', function ($routeparams) { $routeparams.pizzaid // will be my-pizza or another-pizza }) JS 22/04/2016 AngularJS: an introduction 24

Services Responsible to hold the model and communicate with a server Singleton objects that are instantiated only once per app and lazy loaded controllers are instantiated only when they are needed and discarded otherwise 22/04/2016 AngularJS: an introduction 25

Built-in Services Server communication $http, $resource, Wrapping DOM access $location, $window, $document, JavaScript functionality $animate, $log, 22/04/2016 AngularJS: an introduction 26

The $http Service Uses the XMLHttpRequest object (or JSONP) to communicate with a server How it works takes a single argument: a configuration object returns a promise with two methods: success() and error() It can use the.then() method, too it registers a dedicated callback for the success and error method 22/04/2016 AngularJS: an introduction 27

The $http Service $http({ }) method: 'GET', promise url: '/someurl'}).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. }); JS callbacks 22/04/2016 AngularJS: an introduction 28

The $http Service var sonet = angular.module('sonetexample', []); JS sonet.controller('myctrl', ['$scope', '$http', function ($scope, $http) { var promise = $http.get('/pizzas.json'); promise.success(function(data) { $scope.pizzas = data; }); } ]); 22/04/2016 AngularJS: an introduction 29

The $http Service var sonet = angular.module('sonetexample', []); JS sonet.controller('myctrl', ['$scope', '$http', function ($scope, $http) { var promise = $http.get('/pizzas.json'); promise.success(function(data) { $scope.pizzas = data; }); } ]); Shortcut methods:.get(),.post(),.put(),.delete(), etc. 22/04/2016 AngularJS: an introduction 30

$http in a Custom Service // custom service sonet.factory('pizza', function($http) { var pizzaservice = { getdata: function () { return $http.get('/pizzas.json').then(function (response) { return response.data; }); } }; return pizzaservice; }) // controller sonet.controller('pizzactrl', ['$scope', 'Pizza', function ($scope, Pizza) { Pizza.getData().then(function(pizzaList) { $scope.pizzas = pizzalist; }); } ]); JS Example 5 22/04/2016 AngularJS: an introduction 31

The $resource Service Replace the "low level" $http service it has methods with high-level behaviors but the server URLs must be RESTful REST: REpresentational State Transfer works on the concept of resource CRUD: Create, Read, Update and Delete read a collection of resources: read a single resource: add a new resource: update an existing resource: delete an existing resource: GET /pizzas GET /pizzas/:id POST /pizzas PUT /pizzas/:id DELETE /pizzas/:id 22/04/2016 AngularJS: an introduction 32

The $resource Service Requires the ngresource module to be installed No callbacks needed! e.g., $scope.pizzas = pizzaservice.query(); Available methods get(), method: GET, single resource query(), method: GET, is array (collection) save(), method: POST remove(), method: DELETE, delete(), method: DELETE 22/04/2016 AngularJS: an introduction 33

Custom Directives Application specific replace HTML tags with functional tags you define e.g., DatePicker, Accordion,... Naming Camel case naming (ngrepeat) automatically mapped to ng-repeat, data-ngrepeat in the templates e.g., <div ng-repeat></div> 22/04/2016 AngularJS: an introduction 34

Custom Directives A directive returns an object (directive definition) with several properties details: https://docs.angularjs.org/api/ng/service/$compile var sonet = angular.module('sonetexample', []); JS sonet.directive('helloheader', function() { return { restrict: 'E', template: '<h2>hello World!</h2>' }; }); 22/04/2016 AngularJS: an introduction 35

Custom Directives var sonet = angular.module('sonetexample', []); JS sonet.directive('helloheader', function() { return { restrict: 'E', template: '<h2>hello World!</h2>' }; }); Restricts the directive to a specific HTML "item". If omitted, the defaults (Elements and Attributes) are used. 22/04/2016 AngularJS: an introduction 36

Custom Directives var sonet = angular.module('sonetexample', []); JS sonet.directive('helloheader', function() { return { restrict: 'E', template: '<h2>hello World!</h2>' }; }); replace or wrap the contents of an element with this template 22/04/2016 AngularJS: an introduction 37

Compile and Link Named after the two phases Angular uses to create the live view for your application Compile looks for all the directives and transforms the DOM accordingly, then calls the compile function (if it exists) Link makes the view dynamic via directive link functions the link functions typically create listeners on the DOM or the model; these listeners keep the view and the model in sync at all times scopes are attached to the compiled link functions, and the directive becomes live through data binding 22/04/2016 AngularJS: an introduction 38

Link Function: Example var sonet = angular.module('sonetexample', []); sonet.directive('backbutton', ['$window', function ($window) { return { restrict: 'A', link: function (scope, elem, attrs) { elem.bind('click', function () { $window.history.back(); }); } }; }]) JS 22/04/2016 AngularJS: an introduction 39

Other best practices in AngularJS BEST PRACTICES 22/04/2016 AngularJS: an introduction 40

A dot in the model "There should always be a dot in your model" Parent scope: $scope.name = "Anon" Child scope: <input type="text" ng-model="name"> The application will display "Anon" initially, but once the user change the value a name will be created on the child scope and the binding will read and write that value. The parent's name will remain "Anon". This can cause problems in large applications. To avoid them: <input type="text" ng-model="person.name"> 22/04/2016 AngularJS: an introduction 41

camelcase vs dash-case You can use variable named like my-variable myvariable The latter can cause problems in HTML it is case-insensitive Angular solution: use either, it will map them to the same thing Use dash-case in HTML and camelcase in JavaScript 22/04/2016 AngularJS: an introduction 42

Concepts behind AngularJS. Briefly. BACKGROUND 22/04/2016 AngularJS: an introduction 43

Model-View-Controller Pattern Model manage the application data e.g., Javascript objects representing pizza names, pictures, comments, etc. View what the web page looks like e.g., HTML/CSS for viewing pizzas, view pizza photos, etc. Controller fetch models and control views, handle user interactions e.g., Javascript code for DOM event handlers, server communication, etc. 22/04/2016 AngularJS: an introduction 44

View Generation (frontend) HTML/CSS is generated in the frontend Templates are commonly used Basic idea write a HTML document containing parts of the page that do not change add some code that generate the parts computed for each page the template is expanded by executing the code and substituting the result into the document Angular has a rich templating language 22/04/2016 AngularJS: an introduction 45

Models in Angular Angular does not specify model data i.e., as Javascript objects It provides support for fetching data from a web server support for REST APIs JSON is frequently used 22/04/2016 AngularJS: an introduction 46

Single Page Applications Web applications in which the appropriate resource is dynamically loaded and added to the page when necessary Instead of changing the page, a view inside the page is changed everything is in a single web page exploits the templating approach The entire page does not reload it uses AJAX 22/04/2016 AngularJS: an introduction 47

Single Page Applications Problems: 1. mimic static addresses (http://mysite.com/...) and manage browser history 2. mix HTML and JavaScript 3. handle AJAX callbacks Solutions: [managed by Angular and similar frameworks] 1. routing (http://mysite.com/#...) 2. templating 3. server backend + HTML5 functionalities 22/04/2016 AngularJS: an introduction 48

References AngularJS official guide https://docs.angularjs.org/guide AngularJS API documentation https://docs.angularjs.org/api AngularJS in 60 minutes [video] https://www.youtube.com/watch?v=i9mhiguzkem Learn Angular in your browser http://angular.codeschool.com/ 22/04/2016 AngularJS: an introduction 49

Questions? 01QYAPD SOCIAL NETWORKING: TECHNOLOGIES AND APPLICATIONS Luigi De Russis luigi.derussis@polito.it

License This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike Unported (CC BY-NC-SA 3,0) License. You are free: to Share - to copy, distribute and transmit the work to Remix - to adapt the work Under the following conditions: Attribution - You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Noncommercial - You may not use this work for commercial purposes. Share Alike - If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. To view a copy of this license, visit http://creativecommons.org/license/by-nc-sa/3.0/ 22/04/2016 AngularJS: an introduction 51