An introduction to the complex single page web application framework known as AngularJs. An attempt to overview the high-level aspects of the framework, and to supply references for further exploration.
The document discusses AngularJS and provides an introduction and overview. It describes AngularJS as an open source JavaScript framework developed by Google that uses MVC architecture and data binding. It discusses key AngularJS concepts like directives, scopes, controllers and views. It also covers communicating with servers using $http and $resource, and provides an example of writing a custom directive.
This document provides a summary of the AngularJS framework. It discusses the following key points in 3 sentences:
1. AngularJS aims to make HTML better suited for building applications by teaching the browser new syntax like directives. This allows more of the application logic to be handled in the declarative HTML instead of JavaScript code.
2. Angular follows an MVC pattern where the controller contains the business logic and data, the view displays the data through bindings, and the scope acts as a synchronization mechanism between the model and view.
3. Features like data binding, directives, dependency injection and routing allow building dynamic and interactive single-page applications by synchronizing the model and view through declarative templates and separating concerns
AngularJS is a JavaScript MVC framework developed by Google in 2009. It uses HTML enhanced with directives to bind data to the view via two-way data binding. AngularJS controllers define application behavior by mapping user actions to the model. Core features include directives, filters, expressions, dependency injection and scopes that connect controllers and views. Services like $http are used to retrieve server data. AngularJS makes building single page applications easier by taking care of DOM updates automatically.
The document provides an overview of AngularJS, including its core concepts and how it can be used with Java frameworks like Spring, Struts, and Hibernate. AngularJS is an open-source JavaScript framework that assists with building single-page applications using MVC architecture. It allows developers to specify custom HTML tags and directives to control element behavior. The document then discusses key AngularJS concepts like data binding, directives, expressions, filters, controllers, dependency injection, views/routing, and services. It provides examples of how these concepts work and how AngularJS can integrate with Java frameworks in a sample reader application divided into multiple sub-projects.
AngularJS is a popular JavaScript framework. It is intended to make the implementation of RIA (Rich Internet Applications) easier and convenient. AngularJS is created and maintained by Google. It is relatively, a new JavaScript framework, which is designed to make the front-end development as simple as possible. AngularJS is a useful tool for standardizing the web application structure and it provides a future template to ensure that the client-side applications are developed much effectively.
This document by RapidValue is written by Gourav Ajmani, Technical Lead, who has been working on AngularJS for a while, and has read many tutorials and blogs on it. According to Gourav, he could never find any article which gives a clear, concise and step-by-step guide to create the project structure and execute the project. So, he has written this document which will help you to create the Project structure and then execute it in a simple manner.
AngularJS is a JavaScript framework for building dynamic web applications. It augments HTML with custom attributes and directives to bind data and behaviors to the DOM. Key features include two-way data binding, reusable components, dependency injection, routing, and templating. AngularJS uses an MVC or MVVM pattern, with scopes providing the view model. The framework enhances HTML, encourages test-driven development, and makes single page apps possible.
What is AngularJS
AngularJS main components
View / Controller / Module / Scope
Scope Inheritance.
Two way data binding
$watch / $digest / $apply
Dirty Checking
DI - Dependence Injection
$provider vs $factory vs $service
Chicago Coder Conference 2015
Speaker Biography: Wei Ru
Wei Ru has over 15 years of professional experience in design and development of Java enterprise applications across multiple industries. Currently he works as a technical architect at STA Group, LLC. He received a M.S. degree in Computer Science from Loyola University Chicago. As a software developer with an emphasis on Java, he strongly believes in software re-usability, open standards, and various best practices. He has successfully delivered many products using open source platforms and frameworks during his IT consultancies.
Speaker Biography: Vincent Lau
Vincent Lau has been Senior Architect at STA Group in Chicago for the last two years. He received a B.S. degree in Accounting and Finance from the University of Illinois at Chicago and worked on M.S. of Computer Science at DePaul University. He has over 15 years of software design, development, testing and project management experience on large enterprise distributed computing platforms. Most recently, he has worked on web based applications using Java, Spring, JavaScript, Angular.js, jQuery and web services. He previously had Senior Software Engineer and Lead positions in Royal Caribbean Cruises, Wells Fargo Bank, Cap Gemini America and Trans Union Corp.
Presentation: Practical AngularJS
AngularJS has been seen gaining momentum recently. Whether you want to develop a modern single-page application or to spice up only the view enabled by a traditional MVC web framework, AngularJS allows you to write cleaner, shorter code. AngularJS’ two-way data binding feature allows a declarative approach on views and controllers, and ultimately code modulization. With this strategic change and many features offered by AngularJS, learning AngularJS can be challenging. In this session, we will share some of the experiences we had in Angular UI development, we will cover:
AngularJS modules and common project setup
Communicating to a Restful service
Commonly used Angular functions, directives
UI Bootstrap, grid views and forms in AngularJS
Custom Angular directives
Asynchronous functions and event processing
The document outlines best practices for building applications with AngularJS. It discusses the differences between single page apps built with AngularJS and traditional apps, recommending approaches like following AngularJS style guides. The document also summarizes upcoming features for AngularJS 2.0 like improved directives and server-side rendering. Resources are provided for tools like Grunt, Bower, and techniques like search engine optimization for single page apps.
The document discusses how web pages are created using HTML, CSS, and JavaScript. It explains the Document Object Model (DOM) and how JavaScript can manipulate the DOM. It then provides an overview of AngularJS including what it is, how it works, and some key concepts like directives, dependency injection, services, and data binding.
This document discusses AngularJS basics and best practices. It covers what AngularJS is, why it's used, its core framework features like MVVM, dependency injection, and two-way data binding. It also describes the main framework components like modules, scopes, views, controllers, services, routers, resolvers, and directives. The document concludes with a section on unit testing AngularJS applications with Karma and Jasmine.
This document provides an overview and introduction to single page application (SPA) frameworks using AngularJS. It discusses the rise of responsive SPAs and some of the challenges in building SPAs. It then introduces key AngularJS concepts like templates, directives, expressions, data binding, scopes, controllers and modules. It also includes a recap of JavaScript concepts like objects, functions and classes. Finally, it demonstrates basic AngularJS examples using directives, expressions, filters, controllers and scopes.
AngularJS uses a compile function to parse HTML into DOM elements and compile directives. The compile function sorts directives by priority and executes their compile and link functions to connect the scope to the DOM. It recursively compiles child elements. This allows directives to manipulate DOM elements and register behavior.
AngularJS uses a compile process to link directives and scopes. During compilation, it executes factory functions, template functions, compile functions, controllers, pre-link functions and post-link functions for each directive. This process recursively compiles child elements. The compiled output can then be linked with a scope during the linking phase to instantiate the directive.
Single-page applications (SPAs) take user interaction with web applications to a new level. This means that more logic will be moved to the web browser and we have to become more familiar with JavaScript. AngularJS is one of the leading JavaScript frameworks when talking about SPAs. In this workshop I will present AngularJS in terms of problems it addresses and how it does this. Together we will develop a single-page application and we will go through how traditional concepts of web applications (data and state management, authentication) can be solved using the framework. Furthermore, we will dive into typical pitfalls when developing applications using AngularJS and will see how we can avoid them.
This document provides an overview of AngularJS including that it is 100% JavaScript and client-side, uses an MVC pattern, and key concepts like data binding, templating, routing, and dependency injection. It also describes components like directives, controllers, services, and filters and includes code samples to demonstrate concepts like scopes, bindings, and organizing an Angular application.
1) Angular JS modules allow you to organize an application into specific modules that contain controllers, services, filters and directives. A module is created using angular.module and can be retrieved later on.
2) Dependency injection in Angular allows components to receive dependencies from the injector. Dependencies can be annotated inline, through the $inject property or implicitly.
3) Data binding in Angular automatically synchronizes data between the model and view. The view reflects changes made to the model and vice versa using bindings like {{expression}} or ngBind.
Building scalable applications with angular jsAndrew Alpert
This document discusses best practices for organizing AngularJS applications. It recommends organizing files by feature rather than type, with each feature having related HTML, CSS, tests, etc. It also recommends structuring modules to mirror the URL structure and listing submodules as dependencies. The document discusses using services for reusable logic rather than large controllers. It emphasizes writing tests, managing technical debt, following code style guides, and using task runners like Grunt or Gulp to automate tasks.
This document provides an overview of AngularJS, including its core features and concepts. It discusses how AngularJS is a client-side JavaScript framework that uses MVC architecture. Key points covered include two-way data binding, templates, dependency injection, modules, controllers, views, models, scopes, filters, services, and directives. Custom directives and their creation are demonstrated. The document aims to give attendees an introduction to AngularJS and its basic building blocks.
AngularJs $provide API internals & circular dependency problem.Yan Yankowski
The document provides an overview of AngularJS dependency injection and the $provide service. It explains the differences between providers, factories, services, values, constants, and decorators. It describes how $provide registers these items in the providerCache and instanceCache and instantiates them lazily through the $injector. Circular dependencies can cause errors since items point to each other before being fully instantiated.
AngularJS is a JavaScript framework for building single-page applications. It enhances HTML with new attributes and uses MVC/MVVM patterns. Key features include data binding, directives, filters, expressions and dependency injection. AngularJS makes it easier to organize web apps at the client-side by defining ways to structure code and adding custom tags/attributes to HTML. It also helps with common tasks in SPAs like routing, data loading and handling user events.
Angular provides a framework for building client-side web applications. It enhances HTML with directives, data binding, and dependency injection to allow web applications to be developed with MVC architecture. The key concepts of Angular include directives, modules, scopes, and data binding which allow building dynamic views that update automatically based on changes to the underlying model/data.
AngularJS is a JavaScript framework for building frontend web applications. It is inspired by Model-View-Controller (MVC) pattern and uses HTML templating with two-way data binding. Key features include DOM manipulation, validation, routing, and reusable components. The document provides an overview of AngularJS concepts like directives, data binding, controllers, modules, dependency injection, and built-in services. It also demonstrates how to create custom directives and use routing and resources services.
AngularJS - What is it & Why is it awesome ? (with demos)Gary Arora
AngularJS - What is it & Why is it awesome! A quick introduction to AngularJS, its features and some demos. This deck was part of Gary Arora's presentation for the Boston Code Mastery event in December 2013.
This is a talk I gave the at the AngleBrackets/DevIntersection conference in April of 2014 that covers the AngularJS JavaScript framework (one of my favorite frameworks out there!). In this talk I discussed the challenges with Single Page Applications (SPA) and how AngularJS helps solve those challenges with built-in support for two-way data binding, directives and filters, controllers and more. I also discuss the relationship of modules to controllers, factories and services, and more.
The document provides an overview of AngularJS and how to build single page applications with it. It discusses key AngularJS concepts like directives, filters, data binding and MVC architecture. It also presents steps to create a basic AngularJS application and build a responsive user management application as a project example. The document promotes an AngularJS course by Edureka that teaches these concepts over 21 hours of live online classes along with assignments and a project.
Have an upcoming technical interview for a junior front-end developer position at a company that uses AngularJS? Here are 29 AngularJS interview questions for you to practice with!
Chicago Coder Conference 2015
Speaker Biography: Wei Ru
Wei Ru has over 15 years of professional experience in design and development of Java enterprise applications across multiple industries. Currently he works as a technical architect at STA Group, LLC. He received a M.S. degree in Computer Science from Loyola University Chicago. As a software developer with an emphasis on Java, he strongly believes in software re-usability, open standards, and various best practices. He has successfully delivered many products using open source platforms and frameworks during his IT consultancies.
Speaker Biography: Vincent Lau
Vincent Lau has been Senior Architect at STA Group in Chicago for the last two years. He received a B.S. degree in Accounting and Finance from the University of Illinois at Chicago and worked on M.S. of Computer Science at DePaul University. He has over 15 years of software design, development, testing and project management experience on large enterprise distributed computing platforms. Most recently, he has worked on web based applications using Java, Spring, JavaScript, Angular.js, jQuery and web services. He previously had Senior Software Engineer and Lead positions in Royal Caribbean Cruises, Wells Fargo Bank, Cap Gemini America and Trans Union Corp.
Presentation: Practical AngularJS
AngularJS has been seen gaining momentum recently. Whether you want to develop a modern single-page application or to spice up only the view enabled by a traditional MVC web framework, AngularJS allows you to write cleaner, shorter code. AngularJS’ two-way data binding feature allows a declarative approach on views and controllers, and ultimately code modulization. With this strategic change and many features offered by AngularJS, learning AngularJS can be challenging. In this session, we will share some of the experiences we had in Angular UI development, we will cover:
AngularJS modules and common project setup
Communicating to a Restful service
Commonly used Angular functions, directives
UI Bootstrap, grid views and forms in AngularJS
Custom Angular directives
Asynchronous functions and event processing
The document outlines best practices for building applications with AngularJS. It discusses the differences between single page apps built with AngularJS and traditional apps, recommending approaches like following AngularJS style guides. The document also summarizes upcoming features for AngularJS 2.0 like improved directives and server-side rendering. Resources are provided for tools like Grunt, Bower, and techniques like search engine optimization for single page apps.
The document discusses how web pages are created using HTML, CSS, and JavaScript. It explains the Document Object Model (DOM) and how JavaScript can manipulate the DOM. It then provides an overview of AngularJS including what it is, how it works, and some key concepts like directives, dependency injection, services, and data binding.
This document discusses AngularJS basics and best practices. It covers what AngularJS is, why it's used, its core framework features like MVVM, dependency injection, and two-way data binding. It also describes the main framework components like modules, scopes, views, controllers, services, routers, resolvers, and directives. The document concludes with a section on unit testing AngularJS applications with Karma and Jasmine.
This document provides an overview and introduction to single page application (SPA) frameworks using AngularJS. It discusses the rise of responsive SPAs and some of the challenges in building SPAs. It then introduces key AngularJS concepts like templates, directives, expressions, data binding, scopes, controllers and modules. It also includes a recap of JavaScript concepts like objects, functions and classes. Finally, it demonstrates basic AngularJS examples using directives, expressions, filters, controllers and scopes.
AngularJS uses a compile function to parse HTML into DOM elements and compile directives. The compile function sorts directives by priority and executes their compile and link functions to connect the scope to the DOM. It recursively compiles child elements. This allows directives to manipulate DOM elements and register behavior.
AngularJS uses a compile process to link directives and scopes. During compilation, it executes factory functions, template functions, compile functions, controllers, pre-link functions and post-link functions for each directive. This process recursively compiles child elements. The compiled output can then be linked with a scope during the linking phase to instantiate the directive.
Single-page applications (SPAs) take user interaction with web applications to a new level. This means that more logic will be moved to the web browser and we have to become more familiar with JavaScript. AngularJS is one of the leading JavaScript frameworks when talking about SPAs. In this workshop I will present AngularJS in terms of problems it addresses and how it does this. Together we will develop a single-page application and we will go through how traditional concepts of web applications (data and state management, authentication) can be solved using the framework. Furthermore, we will dive into typical pitfalls when developing applications using AngularJS and will see how we can avoid them.
This document provides an overview of AngularJS including that it is 100% JavaScript and client-side, uses an MVC pattern, and key concepts like data binding, templating, routing, and dependency injection. It also describes components like directives, controllers, services, and filters and includes code samples to demonstrate concepts like scopes, bindings, and organizing an Angular application.
1) Angular JS modules allow you to organize an application into specific modules that contain controllers, services, filters and directives. A module is created using angular.module and can be retrieved later on.
2) Dependency injection in Angular allows components to receive dependencies from the injector. Dependencies can be annotated inline, through the $inject property or implicitly.
3) Data binding in Angular automatically synchronizes data between the model and view. The view reflects changes made to the model and vice versa using bindings like {{expression}} or ngBind.
Building scalable applications with angular jsAndrew Alpert
This document discusses best practices for organizing AngularJS applications. It recommends organizing files by feature rather than type, with each feature having related HTML, CSS, tests, etc. It also recommends structuring modules to mirror the URL structure and listing submodules as dependencies. The document discusses using services for reusable logic rather than large controllers. It emphasizes writing tests, managing technical debt, following code style guides, and using task runners like Grunt or Gulp to automate tasks.
This document provides an overview of AngularJS, including its core features and concepts. It discusses how AngularJS is a client-side JavaScript framework that uses MVC architecture. Key points covered include two-way data binding, templates, dependency injection, modules, controllers, views, models, scopes, filters, services, and directives. Custom directives and their creation are demonstrated. The document aims to give attendees an introduction to AngularJS and its basic building blocks.
AngularJs $provide API internals & circular dependency problem.Yan Yankowski
The document provides an overview of AngularJS dependency injection and the $provide service. It explains the differences between providers, factories, services, values, constants, and decorators. It describes how $provide registers these items in the providerCache and instanceCache and instantiates them lazily through the $injector. Circular dependencies can cause errors since items point to each other before being fully instantiated.
AngularJS is a JavaScript framework for building single-page applications. It enhances HTML with new attributes and uses MVC/MVVM patterns. Key features include data binding, directives, filters, expressions and dependency injection. AngularJS makes it easier to organize web apps at the client-side by defining ways to structure code and adding custom tags/attributes to HTML. It also helps with common tasks in SPAs like routing, data loading and handling user events.
Angular provides a framework for building client-side web applications. It enhances HTML with directives, data binding, and dependency injection to allow web applications to be developed with MVC architecture. The key concepts of Angular include directives, modules, scopes, and data binding which allow building dynamic views that update automatically based on changes to the underlying model/data.
AngularJS is a JavaScript framework for building frontend web applications. It is inspired by Model-View-Controller (MVC) pattern and uses HTML templating with two-way data binding. Key features include DOM manipulation, validation, routing, and reusable components. The document provides an overview of AngularJS concepts like directives, data binding, controllers, modules, dependency injection, and built-in services. It also demonstrates how to create custom directives and use routing and resources services.
AngularJS - What is it & Why is it awesome ? (with demos)Gary Arora
AngularJS - What is it & Why is it awesome! A quick introduction to AngularJS, its features and some demos. This deck was part of Gary Arora's presentation for the Boston Code Mastery event in December 2013.
This is a talk I gave the at the AngleBrackets/DevIntersection conference in April of 2014 that covers the AngularJS JavaScript framework (one of my favorite frameworks out there!). In this talk I discussed the challenges with Single Page Applications (SPA) and how AngularJS helps solve those challenges with built-in support for two-way data binding, directives and filters, controllers and more. I also discuss the relationship of modules to controllers, factories and services, and more.
The document provides an overview of AngularJS and how to build single page applications with it. It discusses key AngularJS concepts like directives, filters, data binding and MVC architecture. It also presents steps to create a basic AngularJS application and build a responsive user management application as a project example. The document promotes an AngularJS course by Edureka that teaches these concepts over 21 hours of live online classes along with assignments and a project.
Have an upcoming technical interview for a junior front-end developer position at a company that uses AngularJS? Here are 29 AngularJS interview questions for you to practice with!
This document discusses testing AngularJS applications. It introduces popular testing frameworks like Jasmine and Karma that can be used to write unit tests and automate testing. Jasmine is typically used for testing AngularJS code and examples are given of writing tests with Jasmine. Karma is presented as a tool to automate testing by running tests in browsers. Protractor is introduced for end-to-end testing of front-end DOM elements. The document argues that front-end testing will become more important and integrated into development as tools continue to improve.
The document discusses dependency injection in AngularJS 1.x and Angular 2. In AngularJS 1.x, services, factories, and providers control how components are registered and instantiated. Services are always singletons, while factories and providers allow more control over instantiation. Angular 2 introduces the concepts of injectors, providers, and dependencies to describe how dependencies are created and injected. Providers are recipes that map tokens to factory functions to create objects. Angular 2 provides more control over dependency lifecycles through features like factories, transient instances, scoped injectors, and component bindings.
Material I prepared for a beginner's workshop on AngularJS. Feel free to change it for your own use. I would appreciate it if you attributed the original to me.
AngularJS is a JavaScript MVC framework that makes it easier to build single-page applications. It deemphasizes DOM manipulation and uses data binding to synchronize data between models and views. Some key features include routing, dependency injection, testing capabilities, and directives that extend HTML with new attributes and elements. AngularJS applications use controllers to decorate a scope with model data and callbacks. The scope then synchronizes changes between the model and view.
Client side unit tests - using jasmine & karmaAdam Klein
This document discusses client-side testing using Jasmine and Karma. It introduces Jasmine as the most popular testing framework for writing unit tests in the browser. It demonstrates a simple example of using Jasmine to test a Person constructor function. It then discusses Karma, a test runner that makes browser testing seamless. Karma allows running tests across multiple browsers simultaneously. The document also covers techniques for testing AngularJS controllers and services, including mocking external server calls. It emphasizes that while tests may pass using mocks, the mocks represent the contract with the external code being tested.
Story about module management with angular.jsDavid Amend
Angular.js angular some thoughs and learnings about module management. some ideas about usefulness of amd and alternatives up to async loading of content and execution
Speakers:
Johannes Weber
David Amend
Angularjs practical project experiences with javascript development in a bankDavid Amend
This document summarizes a presentation about DAB Bank's experience switching to Angular.js for web development. It discusses how Angular.js helped solve problems with AJAX, customization, and legacy code. It provides an overview of how DAB Bank used Angular.js to build a personal finance manager application. Additional slides cover topics like SEO, security, Angular 2.0, TypeScript, and modern tech stacks.
This document provides an introduction to unit testing JavaScript code with Jasmine and Karma. It discusses the basics of Jasmine including test suites, specs, expectations, and matchers. It then covers how to set up and run tests with Karma, including configuring Karma, running tests in browsers, handling failures, and testing AngularJS code. Specific topics covered include spies, $httpBackend for mocking HTTP requests, and testing controllers and dependencies injection.
A presentation made for the AngularJS-IL meetup group that took place in May 2014 at Google TLV Campus. its a demonstration of Unit testing an AngularJS component with jasmine and karma.
Angular 2 interview questions and answersAnil Singh
angular 2 interview questions and answers, Angular 2 tutorials, Angular 2 docs, angular 2 interview, Angular, What is Angular 2, angular 2 vs react, What are the fundamentals concepts of Angular 2?,
Testing Angular 2 Applications - Rich Web 2016Matt Raible
The best reason for writing tests is to automate your testing. Without tests, you'll likely be testing manually. This manual testing will take longer and longer as your codebase grows.
In this session, you’ll learn how to test an Angular 2 application. You'll learn how to use Jasmine to unit test components and Protractor for integration testing. We’ll also take a look at code coverage options and explore continuous integration tools.
- Babel and Webpack can be used to modernize an Angular 1.x app by transpiling ES2015 code and bundling dependencies.
- Webpack understands CommonJS, AMD, and ES2015 modules and can bundle them into a single ES5 file. It walks the dependency tree of an app to determine what to include.
- With Webpack, code can be written in ES2015 syntax and imported/exported between files as modules. Stylesheets and other file types can also be imported if they have the proper loader.
How many times have you experienced the agonizing wait as you navigate through a web application? Looking expectantly at the screen, and waiting for the page to load? Frustrating, isn’t it?
Using Single Page web application (SPA) technique can give your web application as seamless an experience as a desktop application. So, what is SPA? And how does it enhance the viewer experience?
The webinar will take you through a step-by-step introduction to SPA, its building blocks, the design techniques and advantages of SPA. It will also discuss the distinct advantages of using AngularJS for Single Page Applications and feature an application demo.
Key Takeaways:
Single Page Web Applications [SPA] , Present and Future
- Introduction
- Why SPA, advantages
- SPA- Multiplatform perspective
- Future of SPA
Architectural considerations for developing SPA
- Building blocks of SPA
- Main Challenges in Web Application Development
Why choose AngularJS for SPA
- Walkthrough of Key AngularJS features
- Advantages of AngularJS in SPA development
Application Demo
Who will benefit from this webinar?
ISVs who want to make their web applications more fluid and engaging for their users
Businesses who don’t want to lose customers because of a slow website
- B2C portals
- Online Retailers
- Travel & Hospitality
- Online shopping portals
- Healthcare portals
Educational & training institutions
This document provides an overview and crash course on AngularJS. It begins with an introduction to key AngularJS concepts like data binding, expressions, scopes, directives, modules, dependency injection, controllers, services, factories and directives. It then covers these topics in more depth, explaining how directives extend HTML, how data binding works, the role of the $scope object, and how to create and inject dependencies using modules. The document also discusses controllers, services, factories and the differences between them. It concludes with brief sections on unit testing with Karma and end-to-end testing with Protractor.
Angular workshop - Full Development GuideNitin Giri
AngularJS provides powerful tools for building single page applications, including data binding, scopes, controllers, directives, filters and forms validation. It follows an MVC pattern with two-way data binding between models and views. Key features include directives for creating custom HTML elements, filters for formatting data and built-in validation for forms. AngularJS aims to improve frontend development by reducing code and server interactions.
This document provides guidance on structuring real Angular app architecture to keep it simple but powerful. It discusses using modules to bundle controllers, directives, services, etc. It emphasizes making slim controllers and putting business logic in services. Services should not manipulate DOM. Directives are for repeated UI functionality and can manipulate DOM. Templates are used to generate DOM elements. The document provides an example app architecture with common modules and components like services for $http requests, offline syncing, state management, loading indicators, and notifications. Controllers publish instances to templates that bind to the DOM.
AngularJS is an open-source JavaScript framework for building client-side web applications. It facilitates the creation of single-page applications using Model-View-Controller architecture. Key aspects of AngularJS include data binding, directives, dependency injection, services, filters and forms. It promotes declarative programming for templates and imperative code for controllers and logic. AngularJS makes it easier to write modular code through services and dependency injection. It also simplifies communication with backend servers via the $http service and $resource for RESTful APIs.
Angularjs is a client side javascript framework that adds interactivity to HTML. It allows developers to create dynamic and interactive web applications. Some key features include directives, modules, controllers, expressions and data binding. Directives are HTML annotations that trigger javascript behaviors. Modules group application components. Controllers add application logic and behavior. Expressions display dynamic values in the HTML. Angularjs uses MVC architecture with the view being the DOM, controllers handling logic, and models storing data. It also utilizes dependency injection to manage dependencies between components.
Node package manager (NPM) initializes projects and manages front-end packages. Bower manages client-side packages like jQuery. Grunt and Gulp automate workflows. Yo generates application scaffolding. Angular uses MVC architecture with views, models, and controllers. Data binding syncs models and views. Directives extend HTML. Modules contain components and support dependency injection. Routes define application states. Filters format data. Controllers manipulate scope data. Values, services, and factories support dependency injection of reusable code. Testing uses Karma, Jasmine, and generated test skeletons.
Slide del corso di AngularJs Intermediate tenuto da LinkMe. Si affronteranno argomenti come l’estensione dell’html tramite direttive, la gestione di chiamate a un server API, crud e non solo, gestione di errori del server, validazione di form e alcuni principi del testing automatico.
AngularJs Workshop SDP December 28th 2014Ran Wahle
This document provides an overview and agenda for a training on AngularJS. It introduces key concepts in AngularJS like modules, dependency injection, data binding with controllers and scopes, services, filters, directives, forms, and routing. Code examples are provided to demonstrate creating modules, controllers, services, binding data between the view and model, and using built-in and custom directives. The training will cover building AngularJS applications with a focus on best practices.
AngularJS is a JavaScript framework for building complex client-side web applications. It provides modules, controllers, directives, services and other core features out of the box. Modules allow separating an application into logical domains and define dependencies. Controllers contain business logic and retrieve data from services. Directives extend HTML attributes and elements. Services provide reusable behavior across the application. AngularJS uses dependency injection for testability and supports unit and end-to-end testing.
Angular Js Get Started - Complete CourseEPAM Systems
This document provides an introduction and overview of AngularJS, including:
- AngularJS is a JavaScript framework for building dynamic web applications and sites. It allows building applications that run in web browsers using HTML.
- Key AngularJS concepts covered include directives, controllers, modules, services, filters, forms, routing and two-way data binding.
- Examples are provided to demonstrate how to create AngularJS applications, controllers, directives, filters and more.
- Custom directives and services can be created to extend the functionality of AngularJS applications.
AngularJS is an open-source JavaScript framework for building dynamic web applications. It uses HTML as the template language and allows extending HTML vocabulary for the application. The key concepts covered in the document include modules and dependency injection, data binding using controllers and scopes, services, filters, form validation, directives, and routing. Various AngularJS features like modules, controllers, services, directives etc. are demonstrated via code examples. The document provides an introduction to core AngularJS concepts through explanations, code samples and a demo.
Angular is an open-source JavaScript framework for building mobile and desktop web applications. It uses TypeScript for development and focuses on building single page applications. The key aspects of Angular include components, modules, templates and data binding.
To set up an Angular application, developers must install Node.js, Angular CLI and configure the development environment. The Angular CLI is used to generate components, run tests and deploy applications. Components and modules are fundamental building blocks - components define views and logic, while modules organize an application's components. Data binding in templates connects application data and DOM elements.
A complete crash course with 7 pratical labs, to have a head start developing single page applications with Angular. It also contains advanced topics, like Transclusion, Directive to directive communication and UI Router.
High Quality presentation: https://goo.gl/3OwQXf
Download Labs: https://goo.gl/cVI6De
This document provides an introduction and overview of AngularJS including its main concepts such as MVC, dependency injection, directives, filters, data binding, routing and REST services. It also discusses Angular scaffolding tools like Yeoman and provides examples of building an Angular application including fetching data from REST APIs and implementing routing. The document contains an agenda with topics and code snippets for controllers, views, directives and services. It also includes exercises for practicing key AngularJS concepts like data binding, routing and consuming REST services.
Angular training - Day 3 - custom directives, $http, $resource, setup with ye...murtazahaveliwala
Follow up on second day's training with third day, covering Custom Directives, $http, $resource, Setup with Yeoman, Unit Testing & Best practices
Code samples shared at https://github.com/murtazahaveliwala/technext-angularjs-demo/tree/master/demos/static/angular-apps
This fast-paced overview for beginners discusses some aspects of AngularJS 1.x and 2.x, which versions to learn (and why), and the technologies that you need to learn. We'll delve into examples of combining AngularJS with other technologies (such as BackboneJS and D3.js), and also address the +/- of AngularJS.
AngularJS is a JavaScript framework that allows developers to create single-page applications. It provides features like two-way data binding, dependency injection, templating, directives and services. The document defines AngularJS, describes its key features and provides examples of how to use controllers, scopes, expressions, services, factories, directives and more to build Angular applications. It also includes exercises for readers to practice creating an Angular movie app that displays now playing movies, actors and allows loading more movies.
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Nikki Chapple
Session | Protecting Your Sensitive Data with Microsoft Purview: Practical Information Protection and DLP Strategies
Presenter | Nikki Chapple (MVP| Principal Cloud Architect CloudWay) & Ryan John Murphy (Microsoft)
Event | IRMS Conference 2025
Format | Birmingham UK
Date | 18-20 May 2025
In this closing keynote session from the IRMS Conference 2025, Nikki Chapple and Ryan John Murphy deliver a compelling and practical guide to data protection, compliance, and information governance using Microsoft Purview. As organizations generate over 2 billion pieces of content daily in Microsoft 365, the need for robust data classification, sensitivity labeling, and Data Loss Prevention (DLP) has never been more urgent.
This session addresses the growing challenge of managing unstructured data, with 73% of sensitive content remaining undiscovered and unclassified. Using a mountaineering metaphor, the speakers introduce the “Secure by Default” blueprint—a four-phase maturity model designed to help organizations scale their data security journey with confidence, clarity, and control.
🔐 Key Topics and Microsoft 365 Security Features Covered:
Microsoft Purview Information Protection and DLP
Sensitivity labels, auto-labeling, and adaptive protection
Data discovery, classification, and content labeling
DLP for both labeled and unlabeled content
SharePoint Advanced Management for workspace governance
Microsoft 365 compliance center best practices
Real-world case study: reducing 42 sensitivity labels to 4 parent labels
Empowering users through training, change management, and adoption strategies
🧭 The Secure by Default Path – Microsoft Purview Maturity Model:
Foundational – Apply default sensitivity labels at content creation; train users to manage exceptions; implement DLP for labeled content.
Managed – Focus on crown jewel data; use client-side auto-labeling; apply DLP to unlabeled content; enable adaptive protection.
Optimized – Auto-label historical content; simulate and test policies; use advanced classifiers to identify sensitive data at scale.
Strategic – Conduct operational reviews; identify new labeling scenarios; implement workspace governance using SharePoint Advanced Management.
🎒 Top Takeaways for Information Management Professionals:
Start secure. Stay protected. Expand with purpose.
Simplify your sensitivity label taxonomy for better adoption.
Train your users—they are your first line of defense.
Don’t wait for perfection—start small and iterate fast.
Align your data protection strategy with business goals and regulatory requirements.
💡 Who Should Watch This Presentation?
This session is ideal for compliance officers, IT administrators, records managers, data protection officers (DPOs), security architects, and Microsoft 365 governance leads. Whether you're in the public sector, financial services, healthcare, or education.
🔗 Read the blog: https://nikkichapple.com/irms-conference-2025/
New Ways to Reduce Database Costs with ScyllaDBScyllaDB
How ScyllaDB’s latest capabilities can reduce your infrastructure costs
ScyllaDB has been obsessed with price-performance from day 1. Our core database is architected with low-level engineering optimizations that squeeze every ounce of power from the underlying infrastructure. And we just completed a multi-year effort to introduce a set of new capabilities for additional savings.
Join this webinar to learn about these new capabilities: the underlying challenges we wanted to address, the workloads that will benefit most from each, and how to get started. We’ll cover ways to:
- Avoid overprovisioning with “just-in-time” scaling
- Safely operate at up to ~90% storage utilization
- Cut network costs with new compression strategies and file-based streaming
We’ll also highlight a “hidden gem” capability that lets you safely balance multiple workloads in a single cluster. To conclude, we will share the efficiency-focused capabilities on our short-term and long-term roadmaps.
Create Your First AI Agent with UiPath Agent BuilderDianaGray10
Join us for an exciting virtual event where you'll learn how to create your first AI Agent using UiPath Agent Builder. This session will cover everything you need to know about what an agent is and how easy it is to create one using the powerful AI-driven UiPath platform. You'll also discover the steps to successfully publish your AI agent. This is a wonderful opportunity for beginners and enthusiasts to gain hands-on insights and kickstart their journey in AI-powered automation.
Grannie’s Journey to Using Healthcare AI ExperiencesLauren Parr
AI offers transformative potential to enhance our long-time persona Grannie’s life, from healthcare to social connection. This session explores how UX designers can address unmet needs through AI-driven solutions, ensuring intuitive interfaces that improve safety, well-being, and meaningful interactions without overwhelming users.
Droidal: AI Agents Revolutionizing HealthcareDroidal LLC
Droidal’s AI Agents are transforming healthcare by bringing intelligence, speed, and efficiency to key areas such as Revenue Cycle Management (RCM), clinical operations, and patient engagement. Built specifically for the needs of U.S. hospitals and clinics, Droidal's solutions are designed to improve outcomes and reduce administrative burden.
Through simple visuals and clear examples, the presentation explains how AI Agents can support medical coding, streamline claims processing, manage denials, ensure compliance, and enhance communication between providers and patients. By integrating seamlessly with existing systems, these agents act as digital coworkers that deliver faster reimbursements, reduce errors, and enable teams to focus more on patient care.
Droidal's AI technology is more than just automation — it's a shift toward intelligent healthcare operations that are scalable, secure, and cost-effective. The presentation also offers insights into future developments in AI-driven healthcare, including how continuous learning and agent autonomy will redefine daily workflows.
Whether you're a healthcare administrator, a tech leader, or a provider looking for smarter solutions, this presentation offers a compelling overview of how Droidal’s AI Agents can help your organization achieve operational excellence and better patient outcomes.
A free demo trial is available for those interested in experiencing Droidal’s AI Agents firsthand. Our team will walk you through a live demo tailored to your specific workflows, helping you understand the immediate value and long-term impact of adopting AI in your healthcare environment.
To request a free trial or learn more:
https://droidal.com/
Jeremy Millul - A Talented Software DeveloperJeremy Millul
Jeremy Millul is a talented software developer based in NYC, known for leading impactful projects such as a Community Engagement Platform and a Hiking Trail Finder. Using React, MongoDB, and geolocation tools, Jeremy delivers intuitive applications that foster engagement and usability. A graduate of NYU’s Computer Science program, he brings creativity and technical expertise to every project, ensuring seamless user experiences and meaningful results in software development.
European Accessibility Act & Integrated Accessibility TestingJulia Undeutsch
Emma Dawson will guide you through two important topics in this session.
Firstly, she will prepare you for the European Accessibility Act (EAA), which comes into effect on 28 June 2025, and show you how development teams can prepare for it.
In the second part of the webinar, Emma Dawson will explore with you various integrated testing methods and tools that will help you improve accessibility during the development cycle, such as Linters, Storybook, Playwright, just to name a few.
Focus: European Accessibility Act, Integrated Testing tools and methods (e.g. Linters, Storybook, Playwright)
Target audience: Everyone, Developers, Testers
UiPath Community Berlin: Studio Tips & Tricks and UiPath InsightsUiPathCommunity
Join the UiPath Community Berlin (Virtual) meetup on May 27 to discover handy Studio Tips & Tricks and get introduced to UiPath Insights. Learn how to boost your development workflow, improve efficiency, and gain visibility into your automation performance.
📕 Agenda:
- Welcome & Introductions
- UiPath Studio Tips & Tricks for Efficient Development
- Best Practices for Workflow Design
- Introduction to UiPath Insights
- Creating Dashboards & Tracking KPIs (Demo)
- Q&A and Open Discussion
Perfect for developers, analysts, and automation enthusiasts!
This session streamed live on May 27, 18:00 CET.
Check out all our upcoming UiPath Community sessions at:
👉 https://community.uipath.com/events/
Join our UiPath Community Berlin chapter:
👉 https://community.uipath.com/berlin/
nnual (33 years) study of the Israeli Enterprise / public IT market. Covering sections on Israeli Economy, IT trends 2026-28, several surveys (AI, CDOs, OCIO, CTO, staffing cyber, operations and infra) plus rankings of 760 vendors on 160 markets (market sizes and trends) and comparison of products according to support and market penetration.
Measuring Microsoft 365 Copilot and Gen AI SuccessNikki Chapple
Session | Measuring Microsoft 365 Copilot and Gen AI Success with Viva Insights and Purview
Presenter | Nikki Chapple 2 x MVP and Principal Cloud Architect at CloudWay
Event | European Collaboration Conference 2025
Format | In person Germany
Date | 28 May 2025
📊 Measuring Copilot and Gen AI Success with Viva Insights and Purview
Presented by Nikki Chapple – Microsoft 365 MVP & Principal Cloud Architect, CloudWay
How do you measure the success—and manage the risks—of Microsoft 365 Copilot and Generative AI (Gen AI)? In this ECS 2025 session, Microsoft MVP and Principal Cloud Architect Nikki Chapple explores how to go beyond basic usage metrics to gain full-spectrum visibility into AI adoption, business impact, user sentiment, and data security.
🎯 Key Topics Covered:
Microsoft 365 Copilot usage and adoption metrics
Viva Insights Copilot Analytics and Dashboard
Microsoft Purview Data Security Posture Management (DSPM) for AI
Measuring AI readiness, impact, and sentiment
Identifying and mitigating risks from third-party Gen AI tools
Shadow IT, oversharing, and compliance risks
Microsoft 365 Admin Center reports and Copilot Readiness
Power BI-based Copilot Business Impact Report (Preview)
📊 Why AI Measurement Matters: Without meaningful measurement, organizations risk operating in the dark—unable to prove ROI, identify friction points, or detect compliance violations. Nikki presents a unified framework combining quantitative metrics, qualitative insights, and risk monitoring to help organizations:
Prove ROI on AI investments
Drive responsible adoption
Protect sensitive data
Ensure compliance and governance
🔍 Tools and Reports Highlighted:
Microsoft 365 Admin Center: Copilot Overview, Usage, Readiness, Agents, Chat, and Adoption Score
Viva Insights Copilot Dashboard: Readiness, Adoption, Impact, Sentiment
Copilot Business Impact Report: Power BI integration for business outcome mapping
Microsoft Purview DSPM for AI: Discover and govern Copilot and third-party Gen AI usage
🔐 Security and Compliance Insights: Learn how to detect unsanctioned Gen AI tools like ChatGPT, Gemini, and Claude, track oversharing, and apply eDLP and Insider Risk Management (IRM) policies. Understand how to use Microsoft Purview—even without E5 Compliance—to monitor Copilot usage and protect sensitive data.
📈 Who Should Watch: This session is ideal for IT leaders, security professionals, compliance officers, and Microsoft 365 admins looking to:
Maximize the value of Microsoft Copilot
Build a secure, measurable AI strategy
Align AI usage with business goals and compliance requirements
🔗 Read the blog https://nikkichapple.com/measuring-copilot-gen-ai/
Jira Administration Training – Day 1 : IntroductionRavi Teja
This presentation covers the basics of Jira for beginners. Learn how Jira works, its key features, project types, issue types, and user roles. Perfect for anyone new to Jira or preparing for Jira Admin roles.
Supercharge Your AI Development with Local LLMsFrancesco Corti
In today's AI development landscape, developers face significant challenges when building applications that leverage powerful large language models (LLMs) through SaaS platforms like ChatGPT, Gemini, and others. While these services offer impressive capabilities, they come with substantial costs that can quickly escalate especially during the development lifecycle. Additionally, the inherent latency of web-based APIs creates frustrating bottlenecks during the critical testing and iteration phases of development, slowing down innovation and frustrating developers.
This talk will introduce the transformative approach of integrating local LLMs directly into their development environments. By bringing these models closer to where the code lives, developers can dramatically accelerate development lifecycles while maintaining complete control over model selection and configuration. This methodology effectively reduces costs to zero by eliminating dependency on pay-per-use SaaS services, while opening new possibilities for comprehensive integration testing, rapid prototyping, and specialized use cases.
Agentic AI - The New Era of IntelligenceMuzammil Shah
This presentation is specifically designed to introduce final-year university students to the foundational principles of Agentic Artificial Intelligence (AI). It aims to provide a clear understanding of how Agentic AI systems function, their key components, and the underlying technologies that empower them. By exploring real-world applications and emerging trends, the session will equip students with essential knowledge to engage with this rapidly evolving area of AI, preparing them for further study or professional work in the field.
Exploring the advantages of on-premises Dell PowerEdge servers with AMD EPYC processors vs. the cloud for small to medium businesses’ AI workloads
AI initiatives can bring tremendous value to your business, but you need to support your new AI workloads effectively. That means choosing the best possible infrastructure for your needs—and many companies are finding that the cloud isn’t right for them. According to a recent Rackspace survey of IT executives, 69 percent of companies have moved some of their applications on-premises from the cloud, with half of those citing security and compliance as the reason and 44 percent citing cost.
On-premises solutions provide a number of advantages. With full control over your security infrastructure, you can be certain that all compliance requirements remain firmly in the hands of your IT team. Opting for on-premises also gives you the ability to design your infrastructure to the precise needs of that team and your new AI workloads. Depending on the workload, you may also see performance benefits, along with more predictable costs. As you start to build your next AI initiative, consider an on-premises solution utilizing AMD EPYC processor-powered Dell PowerEdge servers.
Data Virtualization: Bringing the Power of FME to Any ApplicationSafe Software
Imagine building web applications or dashboards on top of all your systems. With FME’s new Data Virtualization feature, you can deliver the full CRUD (create, read, update, and delete) capabilities on top of all your data that exploit the full power of FME’s all data, any AI capabilities. Data Virtualization enables you to build OpenAPI compliant API endpoints using FME Form’s no-code development platform.
In this webinar, you’ll see how easy it is to turn complex data into real-time, usable REST API based services. We’ll walk through a real example of building a map-based app using FME’s Data Virtualization, and show you how to get started in your own environment – no dev team required.
What you’ll take away:
-How to build live applications and dashboards with federated data
-Ways to control what’s exposed: filter, transform, and secure responses
-How to scale access with caching, asynchronous web call support, with API endpoint level security.
-Where this fits in your stack: from web apps, to AI, to automation
Whether you’re building internal tools, public portals, or powering automation – this webinar is your starting point to real-time data delivery.
2. Crash CourseCrash Course
Show of Hands
Front-end developers?
Back-end developers?
Other?
Using AngularJs at work/home?
New to AngularJs?
Keith Bloomfield
Lead Developer
dev9
3. Overview
Data Binding, Expressions, Scopes,
Ng Directives
Modules, Dependency Injection
Controllers, Services, Factories, Directives
Unit Testing
End-to-End (e2e) Testing
Continuous Integration
Real World Experiences
Tool Support
Resources for Learning
Q&A
Crash Course
Agenda
4. Overview
● AngularJs is a Spa framework
● Manicure/Pedicure
● Body/Facial Treatment
● Massage
● A lot has changed on
the front-end in the last
few years!
5. Overview
● AngularJs is a Spa framework
● Single-Page Application (dynamic views)
● Recommends client-side Model-View-Controller (Mvc) pattern
6. Overview
● AngularJs is a Spa framework
● Single-Page Application (dynamic views)
● Recommends client-side Model-View-Controller (Mvc) pattern
Don't
know about
each other.
7. Overview
● AngularJs is a Spa framework
● Single-Page Application (dynamic views)
● Recommends client-side Model-View-Controller (Mvc) pattern
8. Overview
● AngularJs is a Spa framework
● Single-Page Application (dynamic views)
● Recommends client-side Model-View-Controller (Mvc) pattern
Implications:
Routing
History
Caching
Packaging
Deployment
Automation
Data Binding
Object Modeling
Timing/Dispatch
Templating
Testing
Storage
...
AngularJs
9. Overview
● AngularJs is a Spa framework
● Single-Page Application (dynamic views)
● Recommends client-side Model-View-Controller (Mvc) pattern
What becomes
of this?
11. The View
● Templates/Partials
foo.html
Html content swapped into/out of the single page
my-app.html
my-header.html
my-cart.html
my-news.htmla2.htmla2.html
bn.html
c1.html
a1.html a3.html
b3.html
b2.htmlb1.html
c2.html
d.html
my-mail.html
my-tools.html
12. Data Binding, Expressions and
Scopes
● Extending Html's vocabulary: Directives
– Extend Html as markers on the Dom
– Can be used as an attribute, element, class name, comment
– Tell AngularJs' compiler ($compile) to attach specific behavior to that
Dom element or even transform that element and its children.
<!DOCTYPE html>
<html ng-app>
<head>
<title>echo</title>
</head>
<body>
<div class="container">
Name: <input type="text" ng-model="echo"/>
<br/>
{{ echo }}
</div>
<script src="scripts/angular.min.js"></script>
</body>
</html>
Angular (ng)
Directives
Data Binding
Expression
“The compilation is a process
of walking the DOM tree and
matching DOM elements to
directives.”
(links scope to template)
auto-bootstraps the
AngularJs application/
designates the root
element.
binds input, select, textarea to a
property on the scope using ng-model
(NgModelController), and more.
Evaluated against
the scope.
13. Data Binding, Expressions and
Scopes
● Extending Html's vocabulary: Directives
– Extend Html as markers on the Dom
– Can be used as an attribute, element, class name, comment
– Tell AngularJs' compiler ($compile) to attach specific behavior to that
Dom element or even transform that element and its children.
14. Data Binding, Expressions and
Scopes
● Extending Html's vocabulary: Directives
● The only place where an AngularJs application
touches the Dom is within directives.
● This is good as artifacts that access the Dom
are difficult to test.
More about directives later, but first...
15. Data Binding, Expressions and
Scopes
● $scope
● Acts as the glue between the view and the controller
● Refers to the application model
●
Arranged hierarchically to mimic the Dom
●
Can inherit from parent scope
● Can watch expressions and propagate events
16. Data Binding, Expressions and
Scopes
● $scope
● $rootScope: Defined at the top level of the application (where the
ng-app directive is applied)
● Lookup proceeds up the scope chain when a variable is not found
in the local scope.
● Relying on scope is risky because the Dom layout is often changed.
- Isolating scope protects against changes to the Dom hierarchy.
17. Data Binding, Expressions and
Scopes
● $scope
● $watch: Observe model mutations
● $apply: Propagate model changes through the system into the view
from outside the Angular realm (controllers, services, ng event
handlers). Triggers $digest, which can be used directly in unit tests.
● Also available: $watchCollection, $destroy, $eval, $evalAsync, $on,
$emit, $broadcast
19. Dependency Injection
● Has two phases:
– config: setup providers and constants
– run: after injector is created, kickstart the app
angular.module('myModule', ['moduleDependency1', 'moduleDependency2',....])
.config(function(injectable1, injectable2,...) { // provider-injector
// Use as many of these as you want.
// Can only inject Providers (not instances)
})
.run(function(injectable1, injectable2,....) { // instance-injector
// Use as many of these as you want.
// Can only inject instances (not Providers) and constants
});
Module
21. Dependency Injection
● $provide
- Object in module auto
● auto
- Implicit module which gets automatically added to each $injector
● $injector
- used to retrieve object instances as defined by provider, instantiate types,
invoke methods, and load modules.
22. Dependency Injection
● $provide
- Helper methods (also exposed on module):
● provider(provider) - registers a service provider with the $injector
● constant(obj) - registers a value/object that can be accessed by providers and
services.
● value(obj) - registers a value/object that can only be accessed by services, not
providers.
● factory(fn) - registers a service factory function, fn, that will be wrapped in a
service provider object, whose $get property will contain the given factory
function.
● service(class) - registers a constructor function, class that will be wrapped in a
service provider object, whose $get property will instantiate a new object using
the given constructor function.
● Worth investigating: $provide.decorator() // $provide only
https://egghead.io/lessons/angularjs-provide-decorator
23. Dependency Injection
● $provide
- Helper methods (also exposed on module):
● provider(provider) - registers a service provider with the $injector
● constant(obj) - registers a value/object that can be accessed by providers and
services.
● value(obj) - registers a value/object that can only be accessed by services, not
providers.
● factory(fn) - registers a service factory function, fn, that will be wrapped in a
service provider object, whose $get property will contain the given factory
function.
● service(class) - registers a constructor function, class that will be wrapped in a
service provider object, whose $get property will instantiate a new object using
the given constructor function.
“Where is the Controller?”
● Added to the Dom using ng-controller
● The ng-controller directive asks the injector
to create an instance of the controller and its
dependencies.
● The controller itself never knows about the
injector.
● Loose coupling is maintained.
24. Dependency Injection
● Dependencies are looked up by name for a
provider that satisfies the argument.
app.controller(“AController”, function($scope, $http){
$scope.userName = 'Walt';
$scope.foo = $http.get('http://foo.com');
});
a.controller(“AController”, function(b, c){
b.userName = 'Walt';
b.foo = c.get('http://foo.com');
});
● Minified: Order doesn't matter
$scope found in
ng module
- $rootScopeProvider
- $rootScope.Scope
$http service found
ng module
- $http
OH NO!
25. Dependency Injection
● Longer version preserves dependency by
treating it as an argument:
app.controller(“AController”, ['$scope', '$http', function($scope){
$scope.userName = 'Walt';
$scope.foo = $http.get('http://foo.com');
}]);
a.controller(“AController”, ['$scope', '$http', function(b, c){
b.userName = 'Walt';
b.foo = c.get('http://foo.com');
}]);
● Minified: Order matters
Passed in as arguments
to the function
26. Dependency Injection
● Minification Pain Relief: ngmin
https://github.com/btford/ngmin
It turns this
angular.module('whatever').controller('MyCtrl', function ($scope, $http) { ... });
into this
angular.module('whatever').controller('MyCtrl', ['$scope', '$http', function ($scope, $http) { ... }]);
27. Controllers
● Used to augment the Angular scope
● Attached to the Dom via the ng-controller directive
● Set up the initial state of the $scope object
● Add behavior to the $scope object
<html ng-app="pizza-shop">
<head></head>
<body ng-controller="HomeController">
<div class="container">
<header ng-include="'templates/header.html'">
</header>
<h2>Our Pizzas:</h2>
<div ng-repeat="pizza in pizzas">
<h3>{{ pizza.name }}</h3>
...
app.controller('HomeController', function($scope){
$scope.pizzas = [
{
name: "Meat Lover's",
ingredients: ['Sausage','Pepperoni','Bacon','Olives'],
price: 6
},
{
name: 'Hawaiian',
ingredients: ['Canadian bacon','Pineapple'],
price: 5
},
];
});
28. !Controllers
● Do not use a controller to:
● Manipulate the Dom
- Business logic only. Presentation logic affects testability and belongs in directives
● Format input
- Use angular form controls instead: https://docs.angularjs.org/guide/forms
● Filter output
- Use angular filters instead: https://docs.angularjs.org/guide/filter
● Share code or state across controllers
- Use angular services instead: https://docs.angularjs.org/guide/services
● Manage the life cycle of other components
- eg: Using a controller to create a service instance
29. Services
● Stateless, injectable argument providing the
instance of a function passed to
module.service
● Singleton: delayed/lazy loaded (Not instantiated
until used), only instantiated once
● Good for cross app/controller communication
(sharing of utility functions)
service(class) - registers a constructor function, class that will be
wrapped in a service provider object, whose $get property will
instantiate a new object using the given constructor function.
30. Factories
service factory
module.service('MyService', function() {
this.method1 = function() {
//..
}
this.method2 = function() {
//..
}
});
module.factory('MyService', function() {
var factory = {};
factory.method1 = function() {
//..
}
factory.method2 = function() {
//..
}
return factory;
});
factory(fn) - registers a service factory function, fn, that will be wrapped in
a service provider object, whose $get property will contain the given
factory function.
31. Services, Factories, Values, Constants
● Are convenience methods for making providers
● Serve to avoid polluting the global namespace
32. Services, Factories, Values, Constants
● The difference between factory and service is the
difference between a function and an object.
● Factory(give it a function)
● Service(give it a constructor)
● Further study (object vs. function):
http://stackoverflow.com/questions/1646698/what-is-the-new-keyword-in-javascript
● Further study (ng factory vs. service):
http://iffycan.blogspot.com/2013/05/angular-service-or-factory.html
https://www.youtube.com/watch?v=A6cJasNBkyI
service vs. factory
33. Services, Factories, Values, Constants
● Either can be a primitive, object, or function
● Constant can be injected into services, controllers, or
module configs
● Value can only be injected into services and controllers
value vs. constant
“Why can't value be injected into module
config?”
The injector has not been setup yet.
Constants (special case) are accessed by their
name alone, cannot be changed, and aren't
accessed through a provider $get.
34. Services, Factories, Values, Constants
● Are convenience methods for making providers
You can also create your own providers:
app.config(function($provide){
$provide.provider('MyProvider',{
$get: function(){
return{
foo: function(){
return 'bar';
}
}
}
})
});
36. Directives
Isolate Scope: Directive-specific scope
– Assists in creating reusable components
– Prevents or other components from changing your
model state
app
.controller("myController", function($scope){
$scope.doSomething = function(something){...};
})
.directive('myDirective', function () {
return {
restrict: "E",
scope:{
done:"&"
},
template:'my-template.html'
}
});
The 'scope' option
isolates the directive's
scope.
37. Directives
Directive Definition Options: Instructions to the ng compiler
app
.controller("myController", function($scope){
$scope.doSomething = function(something){...};
})
.directive('myDirective', function () {
return {
restrict: "E",
priority:sort order before compilation,
terminal: if true, process this directive last,
scope: true, false, or {} (isolate)
controller: instantiate before pre-linking phase...,
require:..another directive and inject its controller...
controllerAs:controller alias at the directive scope...
type: doctype ('html','svg','math'),
template:replace current element with....
templateUrl: same as above, but async from url...
replace: where to insert template...,
transclude: precompile element.....,
compile: transform template Dom...,
link: update Dom, register listeners...,
}
restrict:
matching restriction
options:
'A' - only matches attribute name
'E' - only matches element name
'C' - only matches class name
'M' - only matches comment
or any combination.
(eg: 'AE')
default: 'A'
38. Directives
Directive Definition Options: Instructions to the
compiler
app
.controller("myController", function($scope){
$scope.doSomething = function(something){...};
})
.directive('myDirective', function () {
return {
restrict: "E",
priority:sort order before compilation,
terminal: if true, process this directive last,
scope: true, false, or {} (isolate)
controller: instantiate before pre-linking phase...,
require:..another directive and inject its controller...
controllerAs:controller alias at the directive scope...
type: doctype ('html','svg','math'),
template:replace current element with....
templateUrl: same as above, but async from url...
replace: where to insert template...,
transclude: precompile element.....,
compile: transform template Dom...,
link: update Dom, register listeners...,
}
Deferring to api:
https://docs.angularjs.org/api/ng/service/
$compile#description_comprehensive-directive-
api_directive-definition-object
39. Unit Testing
● Test on real devices
● Remote control
● Testing framework agnostic (Jasmine, Mocha, QUnit...
or write adapter)
● Simple CI integration (Jenkins, Travis, Semaphore)
● Open Source
● Easy to debug from IDE
Karma
40. End-to-End (e2e) Testing
Protractor
● Thin wrapper for webdriver.js
● Support for cross-browser testing using
Selenium Webdriver
● Support for GhostDriver/PhantomJs (Wip)
● Includes webdriver-manager for drivers,
Selenium installation, and updates to both
● Includes elementExplorer for building locators
● Integrates with Saucelabs, easy enough to port
over to BrowserStack
42. End-to-End (e2e) Testing
● Protractor
var flow = browser.driver.controlFlow();
// pseudocode
login = function(username){...}
navigateToReviews = function(){...}
addNewReview = function(){...}
flow.execute(login('Walt'));
flow.execute(navigateToReviews);
flow.execute(addNewReview);
(Optional) Tap into webdriver.js:
43. Continuous Integration
● Jenkins + NodeJs plugin
● Unit tests run via Grunt and Karma
● e2e tests are still a work-in-progress:
– Rely on npm concurrent, connect(express), scripts for setup +
watch and teardown
– Awaiting reintroduction of timing in Jasmine for PhantomJs tests
– Awaiting Saucelabs/BrowserStack credentials for cross-browser
tests
44. Real World Experiences: Project
Challenges
Project challenges are similar to those of all
large projects:
● Discovering and establishing best practices amongst
contributors
● Directory structures/file taxonomy, refactoring with project
growth
● Keeping libraries up do date, Bower in the loop
● Rediscovery of conveniences found in mature frameworks
● Multiple solutions, evaluation, and selection
45. Real World Experiences: New
Challenges
● Adjustments for all
Ramp up on new framework and concepts
Continuous delivery and deployment challenges (binary artifacts, externalizing conf)
Various tools/tools in motion (grunt, node/npm, bower, css compilers, yeoman)
● Front-end veterans
New conventions, structures, design patterns (not just jquery, js, css any more)
More responsibility for application architecture
● Back-end veterans
Javascript as the primary language (callbacks, promises, debugging, refactoring..)
UX, responsive
Coordination with rest apis and content delivery service
46. Real World Experiences:Gotchas
● Potential for memory leaks/weird behavior with scope misuse
● Bower gone wild
● Dependency additions, revisions (npm need-to-know)
● Library/dependency bloat
● Issues/feature requests in (ng and integrated) libraries and tools
48. Tool Support: Misc. Open Source
Frameworks
● Yeoman (Yo, Grunt, Bower) + generators
http://yeoman.io/
● Lots of Grunt plugins
● Lots of Npm packages
● Batarang plugin for Chrome
● Browser web developer console
49. Tool Support: Static Code Analysis
● JsHint: http://www.jshint.com/
● grunt-contrib-jshint:
https://github.com/gruntjs/grunt-contrib-jshint
● Enforces code quality using rules
● Configured tasks in grunt pass directly to jshint
● Customizable
– reporter output,
– options and globals
– ignores for specific warnings
● grunt-contrib-concat: Linting before and after concatenating files
50. Tool Support: Code Coverage
● Karma + Istanbul: karma-coverage
https://github.com/karma-runner/karma-coverage
● Generates reports in several formats including Cobertura xml
(integration with Jenkins)
● Protractor
(none, lots of unit tests, REST apis covered on their end)
51. Resources for Learning
● stackoverflow
● angularjs.org
● AngularJs api docs: https://docs.angularjs.org/api
● github (docs, plunkers, demos)
● egghead.io (free and subscription)
● AngularJs Style Guide:
https://google-styleguide.googlecode.com/svn/trunk/angularjs-google-style.html
● angular-phonecat tutorial:
http://docs.angularjs.org/tutorial
● Los Techies AngularJs:
http://lostechies.com/gabrielschenker/2014/02/26/angular-js-blog-series-table-of-content/