Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Powerful Applications with AngularJS

Powerful Applications with AngularJS

Long gone are the days when your Javascript functions were cluttered with HTML or when you injected AJAX responses into DIVs. Meet AngularJS, the framework that brings you clean separation between application logic and templates, does the heavy lifting for backend communications, helps with multilingual support and much more. I will help you build better applications with less effort.

Anna Filina

February 19, 2015
Tweet

More Decks by Anna Filina

Other Decks in Programming

Transcript

  1. Objectives • More advanced front-end. • Maintainable code with fewer

    bugs. • AngularJS site in 30 minutes. • Inspire to build great apps. 3
  2. The problem with JS • Messy content updates. • HTML

    tangled with JS. • Hard to keep everything in sync. 4
  3. AngularJS • Automatic content updates. • HTML separated from JS

    logic. • Everything automatically in sync. 5
  4. Inside the DIV <div ng-controller="ProductsCtrl"> <div ng-repeat="item in products"> <img

    ng-src="{{ item.image }}"> <p>{{ item.name }}</p> </div> </div> 9
  5. Javascript function ProductsCtrl($scope) { $scope.products = [ { "id": "product-1",

    "name": "Skyrim", "description": "Short product description.", "image": "http:...", "price": 19.99, "stock": 10 }]; $scope.showDetails = function(item) { $scope.selectedProduct = item; }; }; 11
  6. Data flow 12 $scope.products $scope.showDetails $scope.selectedProduct <div ng-repeat="item in products">

    <a ng-click="showDetails(item)"> <h2>{{ selectedProduct.name }}</h2>
  7. Javascript $scope.query = ''; $scope.minPrice = 1; $scope.maxPrice = 20;

    $scope.updateResults = function() { for (var i = 0; i < $scope.products.length; i++) { var product = $scope.products[i]; product.hidden = true; [...] if (matchesQuery && matchesPrice) { product.hidden = false; } }; } 17
  8. Javascript var app = angular.module('myApp', ['ngResource']); app.controller('ProductsCtrl', function($scope, $resource) {

    var url = 'http://api.shop.dev/v1.0/products'; $resource(url).get({}, function(response) { $scope.products = response.data; }); }); 21
  9. Services • Development: PHP, JS, etc. • Fix problems: bugs,

    performance, etc. • Workshops: AngularJS, testing, Symfony, etc. • Advisor: testing strategy, architecture, etc. 22
  10. Javascript app.config(function($routeProvider) { $routeProvider. when('/list', { templateUrl: 'list.html', controller: 'ProductsListCtrl'

    }). when('/detail/:id', { templateUrl: 'detail.html', controller: 'ProductsDetailCtrl' }). otherwise({ redirectTo: '/list' }); }); 25