27
AngularJS podobno tworzy go google ;)

AngularJS szkolenie wewnętrzne (into)

Embed Size (px)

Citation preview

Page 1: AngularJS szkolenie wewnętrzne (into)

AngularJSpodobno tworzy go google ;)

Page 2: AngularJS szkolenie wewnętrzne (into)

● o wiele szybsze pisanie aplikacji● bardzo łatwe pisanie aplikacji “czasu

rzeczywistego”● wprowadza szkielet aplikacji● MVC● Sky’s is the limit!

Dlaczego używamy AngularJS?

Page 3: AngularJS szkolenie wewnętrzne (into)

Jakie są wady pisania w nim ?

● wystarczy jeden błąd i panel klienta nie działa

● tydzień hakowałem by działał po IE7 i IE8● działa wolno pod starszymi przeglądarkami● niektóre rzeczy są naprawdę trudne!● Jeśli korzystamy z szablony Django to

trzeba pamiętać o VERBATIM :-)● Nie lubi się z JQ (chociaż z niego korzysta)

Page 4: AngularJS szkolenie wewnętrzne (into)

Kiedyś...var name = '';

$('body').on('change', '#name-input', function() {

var name = $(this).val();

});

var set_name = function(new_name) {

$('#name-input').val(new_name);

}

Page 5: AngularJS szkolenie wewnętrzne (into)

Data Binding (Two-way binding)

Page 6: AngularJS szkolenie wewnętrzne (into)

Czyli...

$scope.name = 'Marcin Baran'; <input type="text" ng-model="name"

>

Page 7: AngularJS szkolenie wewnętrzne (into)

Czyli...

$scope.name = ''; <input type="text" ng-model="name"

>

Page 8: AngularJS szkolenie wewnętrzne (into)

Można to wykorzystać tak

Page 9: AngularJS szkolenie wewnętrzne (into)

Marcin Mergo gdy dowiedział się że to co robił 2 godzin mógł zrobić w 2 minuty (true story bro!)

Page 10: AngularJS szkolenie wewnętrzne (into)

$scope - context

● $scope są zagnieżdżane ● każdy $scope może odwołać się do swojego

rodzica● $scope może odczytać wartości swoich

rodziców● $scope nie może odczytać wartości swoich

dzieci

Page 11: AngularJS szkolenie wewnętrzne (into)

$scope-ów może być naprawdę dużo

Page 12: AngularJS szkolenie wewnętrzne (into)

$scope to nie tylko pudełko na zmienne$scope.name = 'Marcin';

$scope.$watch('myVar', function(newVal, oldVal) {

alert('Hej, ' + oldVal + ' zmienil imie na ' + newVal);

});

Page 13: AngularJS szkolenie wewnętrzne (into)

Jak dziala $scope ?

Page 14: AngularJS szkolenie wewnętrzne (into)

AngularJS Batarang

● super wtyczka do chrome● ułatwia naukę i debugowanie● pokazuje nam Performence aplikacji● i wiele wiecej

Page 15: AngularJS szkolenie wewnętrzne (into)

AngularJS Batarang

Page 16: AngularJS szkolenie wewnętrzne (into)

Ciekawostka:

Gdy jest jakiś błąd w panelu klienta, jesteśmy w stanie odświeżyć stronę WSZYSTKIM użytkownikom

AngularJS + socket.io aka ServerPush

ping_notifier('refresh_page')# na produkcji

Page 17: AngularJS szkolenie wewnętrzne (into)

Aplikacja “czasu rzeczywistego”

● serverpush - czyli socket.io + serwer tornadio

● ping_notifier(event, some data) - powiadomienie o zmianie z poziomu pythona

● $scope.$on(event, some data) - odbieranie danych po stronie JavaScript

● zmiana danych bez przeładowania!

Page 18: AngularJS szkolenie wewnętrzne (into)

AngularJS to

● Directives

● Filters

● Controllers

● App

● Models

● Services

Page 19: AngularJS szkolenie wewnętrzne (into)

Directives - reużycie (HTML)

● Jak templatetags w django!● Derektywa <tooltip>Jakieś info</tooltip>

tworzy nam odpowiedni HTML + dodaje odpowiedni JS

● <input ik-calendar> - Tworzy nam kalendarz● <chart /> - tworzy nam wykres kursów

Page 20: AngularJS szkolenie wewnętrzne (into)

Wbudowane derektywy w angularJS

● ng-show/ng-hide

● ng-repeat/ng-repeat-start/ng-repeat-end

● ng-init

● ng-class

● Więcej http://docs.angularjs.org/api/ng.$http

Page 21: AngularJS szkolenie wewnętrzne (into)

Wbudowane derektywy w angularJS

● ng-click

● ng-change

● ng-submit

● Więcej http://docs.angularjs.org/api/ng.$http

Page 22: AngularJS szkolenie wewnętrzne (into)

Filters

● Jak filters w django!● modyfikują wartość● filtr filtrujący listę kont użytkownika (w htmlu)

<div ng-repeat="account in accounts|filter: {is_owner: true}" class="ng-

scope">

Page 23: AngularJS szkolenie wewnętrzne (into)

Controllers

● idea taka jak zawsze● Kazdy controller ma wlasny scope● MainController => CalculatorCtrl, RateCtrl

Page 24: AngularJS szkolenie wewnętrzne (into)

Services (lazy objects)

● Współdzielenie danych między controller● Do czego można je użyć ?

○ $transactions - lista transakcji użytkownika○ $balance - agegator sald na kontach w (ED)○ $myhttp - własny AJAX handler

Page 25: AngularJS szkolenie wewnętrzne (into)

App

● zawiera $rootScope● możliwość definiowania zmiennych

dostępnych w każdym $scopie● definuje się routing

Page 26: AngularJS szkolenie wewnętrzne (into)

Pytania ?

Page 27: AngularJS szkolenie wewnętrzne (into)

Dziękuje za uwagę!