Martin Sandström
A(ng)ular JS
A(ng)ular JS
Jag dissar inte jQuery.
Använder det mest som en jämförelse.
React, Ember, Knockout är också bra databinding verktyg.
Koden är skriven för att ge exempel, hänvisa inte till den som best practice.
A(ng)ular JS
A(ng)ular JS
A(ng)ular JS
I hereby declare AngularJS to be MVW framework - Model-View-Whatever
/ Igor Minar, Angular-team
A(ng)ular JS
Varför Angular?
SOC och slippa krångla
Binda data till HTML
* Lyssna på input
* Uppdatera variabel
* Hämta elementet
* Sätt dess värde till variabel
A(ng)ular JS
Hur ser det ut "idag" med jQuery?
$('#myButton').click(function(){
var firstName = $('#firstName').val();
var lastName = $('#lastName').val();
var fullNameTag = $('#fullName');
var fullName = firstName + ' ' + lastName;
fullNameTag.val(fullName);
};
A(ng)ular JS
Visar inte html för att spara utrymme.
<input type="text" ng-model="firstName">
<input type="text" ng-model="lastName">
<p>{{ firstName + " " + lastName }}</p>
A(ng)ular JS
fungerar, men är ingen bra ide.
"unobtrusive javascript"
A(ng)ular JS
<!-- inte rekommenderat-->
<input type="text" name="date" onchange="validateDate()" />
<!-- rekommenderat-->
<input type="text" name="date" id="date" />
window.onload = function() {
document.getElementById('date').onchange = validateDate;
};
A(ng)ular JS
<!-- referens till AngularJS -->
<script src="js/vendor/Angular.js"></script>
<!-- ng-app attributet -->
<body ng-app="myAngularApp">
Kontrollera att JS-ramverket fungerar => börja koda
A(ng)ular JS
<h1> Hello {{ 1 + 1 }} you </h1>
A(ng)ular JS
angular.module("myAngularApp", [])
.controller("myController", function ($scope) {
$scope.message = "This is a message from myController";
});
<div ng-controller="myController">
<!-- Här bestämmer myController -->
<p> {{ message }} </p>
</div>
"Scope is the glue between application controller and the view."
Två sätt att binda till $scope
A(ng)ular JS
Loose coupling
SOC
angular.module("myAngularApp", [])
.controller("myController", function ($scope, gameService) {
$scope.games = gameService.getGames();
});
A(ng)ular JS
"Borde inte någon ha tänkt på detta?"
A(ng)ular JS
Olika sidor kan dela på samma HTML
Resulterar i reusability
<my-shared-table></my-shared-table>
Web components
e2e-test
unit-test
Mock för att testa bla data connections och klick-event.
A(ng)ular JS
Så pass stort att man har lyft ut vissa delar
A(ng)ular JS
A(ng)ular JS
A(ng)ular JS
A(ng)ular JS
angular.module("myAngularApp", [])
.controller("myController", function () {
var controller = this;
controller.message = "this is a message from the controller";
});
<div data-ng-controller="myController as vm">
<p> {{ vm.message }} </p>
</div>
martinsandstrom.github.io
A(ng)ular JS