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

AngularJS

Avatar for Mario Uher Mario Uher
February 19, 2014

 AngularJS

Slides from my AngularJS talk at stahlstadt.js

http://www.meetup.com/stahlstadt-js/events/159159282/

Avatar for Mario Uher

Mario Uher

February 19, 2014
Tweet

Other Decks in Programming

Transcript

  1. WORKFLOW • möglichst viel am Server machen • JavaScript wenn

    notwendig • 5 surprisingly painful things about client-side JS
  2. $scope $rootScope Directives Factories Module Services Expressions Data binding DI

    Routers Testing Karma Constants Providers Filters Dependencies Scopes Filters Factories Dependencies Constants Data binding Services Directives Data binding Constants Directives $rootScope Testing Data bin Express Karma tives Data binding Factories Dependencies Dependencies DI Karma Directives Constants Dependencies Directives Directives Directives Services Testing ependencies DI $scope $scope $scope Directives Dependenc Depend $scope DI DI Direc endencies Dependencies Dependencies Data binding Dependencies
  3. ???

  4. MARKUP LANGUAGE • HTML 2.0 • FrontPage / Dreamweaver •

    HTML5 • Twitter Bootstrap • Web Components !
  5. MARKUP LANGUAGE • HTML 2.0 • FrontPage / Dreamweaver •

    HTML5 • Twitter Bootstrap • Web Components ?
  6. ALERT <div class="alert" ng-hide="hidden"> I'm sorry Mario, I'm afraid you

    can't do that. ! <a href="#" ng-click="hidden = true">&times;</a> </div>
  7. ALERT <div class="alert" ng-hide="hidden"> I'm sorry Mario, I'm afraid you

    can't do that. ! <a href="#" ng-click="hidden = true">&times;</a> </div>
  8. ALERT <div class="alert" ng-hide="hidden"> I'm sorry Mario, I'm afraid you

    can't do that. ! <a href="#" ng-click="hidden = true">&times;</a> </div>
  9. GRAPH <graph> <axis position="left"></axis> <axis position="bottom"></axis> <line name="typical-week" data="visitors.typicalWeek"></line> <line

    name="this-week" data="visitors.thisWeek"></line> <line name="last-week" data="visitors.lastWeek"></line> </graph> How Angular Lets Us Iterate Like Crazy
  10. GRAPH <graph> <axis position="left"></axis> <axis position="bottom"></axis> <line name="typical-week" data="visitors.typicalWeek"></line> <line

    name="this-week" data="visitors.thisWeek"></line> <line name="last-week" data="visitors.lastWeek"></line> </graph> How Angular Lets Us Iterate Like Crazy
  11. CONTROLLER function UserController($scope) { $scope.name = 'Mario'; } ! <div

    ng-controller="UserController"> My name is {{name}} </div>
  12. CONTROLLER function UserController($scope) { $scope.name = 'Mario'; } ! <div

    ng-controller="UserController"> My name is {{name}} </div>
  13. CONTROLLER function UserController($scope) { $scope.name = 'Mario'; } ! <div

    ng-controller="UserController"> My name is {{name}} </div>
  14. CONTROLLER function UserController($scope) { $scope.users = [{ name: 'Mario' }];

    } ! <table ng-controller="UserController"> <tr ng-repeat="user in users"> <td>{{user.name}}</td> </tr> </table>
  15. CONTROLLER function UserController($scope) { $scope.users = [{ name: 'Mario' }];

    } ! <table ng-controller="UserController"> <tr ng-repeat="user in users"> <td>{{user.name}}</td> </tr> </table>
  16. SERVICES • Plain JavaScript Objects • Binden Ressourcen wie Webdienste

    und Datenbanken ein • Enthalten Geschäftslogik
  17. SERVICES var User = $resource('/user/:userId', { userId:'@id' }); var user

    = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save(); });
  18. SERVICES var User = $resource('/user/:userId', { userId:'@id' }); var user

    = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save(); });
  19. SERVICES var User = $resource('/user/:userId', { userId:'@id' }); var user

    = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save(); });
  20. SERVICES var User = $resource('/user/:userId', { userId:'@id' }); var user

    = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save(); });
  21. SERVICES angular.module('App', ['ngResource']).factory('User', function($resource) { return $resource('/user/:userId', { userId:'@id' });

    }); ! function UserController($scope, User) { $scope.users = User.query(); ! var user = User.get({ userId: 1 }, function() { user.name = 'Mario'; user.save(); }) }
  22. SERVICES angular.module('App', ['ngResource']).factory('User', function($resource) { return $resource('/user/:userId', { userId:'@id' });

    }); ! function UserController($scope, User) { $scope.users = User.query(); ! var user = User.get({ userId: 1 }, function() { user.name = 'Mario'; user.save(); }) }
  23. SERVICES angular.module('App', ['ngResource']).factory('User', function($resource) { return $resource('/user/:userId', { userId:'@id' });

    }); ! function UserController($scope, User) { $scope.users = User.query(); ! var user = User.get({ userId: 1 }, function() { user.name = 'Mario'; user.save(); }) }
  24. DEPENDENCY INJECTION • Jeder Controller definiert seine Abhängigkeiten • Angular

    kümmert sich um die Auflösung der Abhängigkeiten und meldet Probleme • Macht Testen leicht
  25. LERNEN • Tutorial und Docs auf http://angularjs.org • Brad Green

    (@bradlygreen) • Igor Minar (@IgorMinar) • @angularjs • https://egghead.io (@eggheadio)