SlideShare a Scribd company logo
1 of 38
AngularJs
Warsztaty - stopień 2
Środowisko
● wi-fi: ASII-Guest
● konsolowy git
● chrome/chrominum
<input type="range">
Start
● Treść slajdów: http://bit.ly/angular-
workshop2
● git clone https://github.com/marcin-
wosinek/workshop-2.git
● chrome:
○ linux: chromium-browser --disable-web-security
○ windows - skopiować link do chroma i edytować:
"(originalny link) --disable-web-security"
● git config --global alias.tree 
"log --oneline --graph --decorate --all"
Projekt
index.html
● ng-view - ładujemy ścieżki
● underscore - użyteczne funkcje
<!-- Add your site or application content here -->
<div class="container" ng-view></div>
<script src="components/angular/angular.js"></script>
<script src="components/underscore/underscore.js"
></script>
Ścieżki
● konfiguracja aplikacji
● definicja ścieżek
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/contact/:id', {
redirectTo: '/contact/:id/view'
})
Kontrolery
● $routeParams
● contacts
angular.module('workshop2App')
.controller('ContactViewCtrl',
function ($scope, $routeParams, contacts) {
$scope.contact = contacts.get($routeParams.id);
$scope.id = $routeParams.id;
});
Serwis z danymi
● contacts
● json-generator
angular.module('workshop2App')
.factory('contacts', function () {
var exampleContacts = [ ... ];
// Public API here
return {
getAll: function () {
return exampleContacts;
},
get: function (id) {}
Underscore
● użyteczne funkcje
● dokumentacja
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return
num % 2 == 0; });
// => [2, 4, 6]
var sum = _.reduce([1, 2, 3], function(memo, num){ return
memo + num; }, 0);
// => 6
_.isString(object)
_.isNumber(object)
Struktura plików
● git checkout slide-1
Yeoman
Filtry
● pozwalają zmieniać dane z poziomu widoku
● wbudowane filtry
<p></p>
<p>Output: </p>
<tr ng-repeat="friend in friends | filter:searchText">
</tr>
Pisanie filtrów
● zwracamy przetworzony element
● przyjmujemy dowolną liczę argumentów
angular.module('workshop2App')
.filter('filterName', function () {
return function (input, arg1, arg2) {
return 'between filter: ' + input;
};
});
<li ng-repeat="element in list | filterName:value1:value2">
angular.forEach
● pętla
● nie kopiujej danych stworzonych przez
angulara
var array = [1, 2, 3];
angular.forEach(array, function(value){
this.push('Value: ' + value);
});
Zadanie 1: filtr przedziału
● filtr wybierający ludzi z odpowiedniego
przedziału wieku
● git checkout todo-1
● użycie: app/views/showContacts.html +9
● implementacja: app/scripts/filters/between.js
Rozwiązanie 1
● git add .
● git commit -m '(commit message)'
● git checkout done-1
● Pytania?
Angular 1.1.x
Animacje & ngAnimate
http://www.nganimate.org/
Zadanie 2: zastosowanie animacji
● animowanię zmiany wyświeltanych
elementów
● git checkout todo-2
● implementacja: app/views/showContacts.
html & app/styles/main.css
Rozwiązanie 2
● git add .
● git commit -m '(commit message)'
● git checkout done-2
● Pytania?
Cel: liczenie userów
Global controller
● git checkout slide-3
● pliki: app/index.html +26
Generator UUID
● git checkout slide-4
● pliki: app/scripts/services/wsUuidGenerator.
js
Cookies
Cookies w angularze
● ngCookies
● $cookies
Zadanie 3: tracking cookies
● git checkout todo-3
● implementacja:
app/scripts/controllers/global.js
● Jeśli nie ma 'trackingId' na ciasteczku -
ustawamy je na nowo wygenerowany UUID
Rozwiązanie 3
● git add .
● git commit -m '(commit message)'
● git checkout done-3
● Pytania?
Directives
<span my-dir="exp"></span>
<span class="my-dir: exp;"></span>
<my-dir></my-dir>
<!-- directive: my-dir exp -->
Pisanie directives
● git checkout slide-5
● plik: app/scripts/directives/ws-accept-
cookies.js
ngTransclude
{
transclude: true,
template: '<div ng-transclude></div>'
}
Zadanie 4: template dla ws-accept-
cookies
● git checkout todo-4
● przykład użycia: app/index.htm +27
● implementacja: app/scripts/directives/ws-
accept-cookies.js
● to co jest oryginalnie wewnatrz tagu chcemy
mieć wciąż w directive + chcemy mieć guzik
'accept'
Rozwiązanie 4
● git add .
● git commit -m '(commit message)'
● git checkout done-4
● Pytania?
Linking function
● scope
● element
● attrs
Zadanie 5: ws-accept-cookies -
implementacja chowania
● git checkout todo-5
● dodanie obsługki kliknięcia guzika akceptuj
● ukrywanie elementu jesli ciasteczka były już
zaakceptowane
Rozwiązanie 5
● git add .
● git commit -m '(commit message)'
● git checkout done-5
● Pytania?
Instalowanie yeomana
● Do przyszłych warsztatów będziemy
korzytać z yeomana
● Dla chetnych: sprubujcie teraz zainstalować
http://yeoman.io/
Co na następnych warsztatach?
● directives
● unit testy & TDD we frontendzie
● warte uwagii projekty:
○ angular-ui
○ angular-bootstrap
Stay tuned
● Akai: http://akai.org.pl/
● GDG Poznań: https://plus.google.
com/110191013153077917985
● Hacking Poznań: http://www.meetup.
com/Hacking-Poznan/

More Related Content

Similar to Angular js warsztaty stopień 2

Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP3camp
 
Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2Jakub Nietrzeba
 
Integracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformIntegracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformFly on the cloud
 
Deployment historia pewnej aplikacji
Deployment   historia pewnej aplikacjiDeployment   historia pewnej aplikacji
Deployment historia pewnej aplikacjiGrzegorz Stawarczyk
 
Poland - Dev Days 2005
Poland - Dev Days 2005Poland - Dev Days 2005
Poland - Dev Days 2005Tomasz Cieplak
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...The Software House
 
Gtm shoper-wrzesień 2017
Gtm shoper-wrzesień 2017Gtm shoper-wrzesień 2017
Gtm shoper-wrzesień 2017ROIExperts
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoNatalia Stanko
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaWojciech Lichota
 
4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil Borkowski
4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil Borkowski4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil Borkowski
4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil BorkowskiPROIDEA
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Bartlomiej Zass
 
OSGi, deklaratywnie
OSGi, deklaratywnieOSGi, deklaratywnie
OSGi, deklaratywnieCode-House
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravel Poland MeetUp
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaMarcin Gajda
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015Tomasz Dziuda
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkitbartosz_w
 

Similar to Angular js warsztaty stopień 2 (20)

Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2
 
Integracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformIntegracja Django z Google Cloud Platform
Integracja Django z Google Cloud Platform
 
Deployment historia pewnej aplikacji
Deployment   historia pewnej aplikacjiDeployment   historia pewnej aplikacji
Deployment historia pewnej aplikacji
 
Poland - Dev Days 2005
Poland - Dev Days 2005Poland - Dev Days 2005
Poland - Dev Days 2005
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
 
Gtm shoper-wrzesień 2017
Gtm shoper-wrzesień 2017Gtm shoper-wrzesień 2017
Gtm shoper-wrzesień 2017
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia Stanko
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia Stanko
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
 
4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil Borkowski
4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil Borkowski4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil Borkowski
4Developers 2015: Analiza ruchu w aplikacji AngularJS - Kamil Borkowski
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)
 
OSGi, deklaratywnie
OSGi, deklaratywnieOSGi, deklaratywnie
OSGi, deklaratywnie
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
 

More from Marcin Wosinek

Automation in angular js
Automation in angular jsAutomation in angular js
Automation in angular jsMarcin Wosinek
 
Automatyzacja w ng świecie - ng-poznań 11 września 2014
Automatyzacja w ng świecie - ng-poznań 11 września 2014Automatyzacja w ng świecie - ng-poznań 11 września 2014
Automatyzacja w ng świecie - ng-poznań 11 września 2014Marcin Wosinek
 
AngularJs in Las Palmas de GC
AngularJs in Las Palmas de GCAngularJs in Las Palmas de GC
AngularJs in Las Palmas de GCMarcin Wosinek
 
The angular way 19 october 2013 Gdańsk
The angular way   19 october 2013 GdańskThe angular way   19 october 2013 Gdańsk
The angular way 19 october 2013 GdańskMarcin Wosinek
 
Angular js 24 april 2013 amsterdamjs
Angular js   24 april 2013 amsterdamjsAngular js   24 april 2013 amsterdamjs
Angular js 24 april 2013 amsterdamjsMarcin Wosinek
 
Backbone js in drupal core
Backbone js in drupal coreBackbone js in drupal core
Backbone js in drupal coreMarcin Wosinek
 
Angular js - 4developers 12 kwietnia 2013
Angular js - 4developers 12 kwietnia 2013Angular js - 4developers 12 kwietnia 2013
Angular js - 4developers 12 kwietnia 2013Marcin Wosinek
 

More from Marcin Wosinek (7)

Automation in angular js
Automation in angular jsAutomation in angular js
Automation in angular js
 
Automatyzacja w ng świecie - ng-poznań 11 września 2014
Automatyzacja w ng świecie - ng-poznań 11 września 2014Automatyzacja w ng świecie - ng-poznań 11 września 2014
Automatyzacja w ng świecie - ng-poznań 11 września 2014
 
AngularJs in Las Palmas de GC
AngularJs in Las Palmas de GCAngularJs in Las Palmas de GC
AngularJs in Las Palmas de GC
 
The angular way 19 october 2013 Gdańsk
The angular way   19 october 2013 GdańskThe angular way   19 october 2013 Gdańsk
The angular way 19 october 2013 Gdańsk
 
Angular js 24 april 2013 amsterdamjs
Angular js   24 april 2013 amsterdamjsAngular js   24 april 2013 amsterdamjs
Angular js 24 april 2013 amsterdamjs
 
Backbone js in drupal core
Backbone js in drupal coreBackbone js in drupal core
Backbone js in drupal core
 
Angular js - 4developers 12 kwietnia 2013
Angular js - 4developers 12 kwietnia 2013Angular js - 4developers 12 kwietnia 2013
Angular js - 4developers 12 kwietnia 2013
 

Angular js warsztaty stopień 2