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

AngularJS

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
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)