SlideShare a Scribd company logo
1 of 36
Czysty kod - "Controller as" w
obronie kanciastego.
Dariusz Kalbarczyk
2015-10-22
Dziękuję za to że jesteście z nami dzisiaj.
Co ja tutaj robię ;)
http://goo.gl/ZFvbc8 http://goo.gl/9OUbV7
Angular Module
Angular Module
Config
Routs
View Controllers
Directives Factories
$scope
Kontroler – JavaScript’owy konstruktor
// JavaScript Constructor
function Car(){
this.model = 'RANGE ROVER';
this.price = 300000;
this.engine = '3.0 V6'
}
// za każdym razem kiedy otwieramy kontroler, tworzymy nową instancję
var sale = new Car();
Klasyczne wywołanie kontrolera
angular
.module('app.cars')
.controller('Car', Car);
function Car($scope){
$scope.model = 'RANGE ROVER';
$scope.price = 300000;
$scope.engine = '3.0 V6';
}
$scope
Składnia - Controller As
angular
.module('app.cars')
.controller('Car', Car);
function Car(){
var vm = this;
vm.model = 'RANGE ROVER';
vm.price = 300000;
vm.engine = '3.0 V6';
}
vm = this
$scope vs VM
angular
.module('app.cars')
.controller('Car', Car);
function Car($scope){
console.log('scope ',$scope);
};
$scope vs VM
angular
.module('app.cars')
.controller('Car', Car);
function Car(){
var vm = this;
console.log('vm ', vm);
};
$scope
• $id
• $apply
• $digest
• $watch
• $broadcast
• $destroy
• $emit
• $eval
$scope
• $new
• $on
• $parnet
• $root
• $watchCollection
• $evalAsync
• …
Zagnieżdżanie kontrolerów
<div ng-controller="Ctrl1">
{{test}}
<div ng-controller="Ctrl2">
{{test}}
<div ng-controller="Ctrl3">
{{test}}
</div>
</div>
</div>
Która wartość
zostanie
wyświetlona?
Bardziej czytelnie
<div ng-controller="Ctrl1">
{{ctrl1.test}}
<div ng-controller="Ctrl2">
{{ctrl2.test}}
<div ng-controller="Ctrl3">
{{ctrl3.test}}
</div>
</div>
</div>
Co się stanie?
<div ng-controller="Ctrl1">
Ctrl1: {{test}}
<div ng-controller="Ctrl2">
Ctrl2: {{test}}
<div ng-controller="Ctrl3">
Ctrl3: {{test}}
</div>
</div>
</div>
Co się stanie?
(function () {
angular
.module('app', []).controller('Ctrl1', Ctrl1)
.controller('Ctrl2', Ctrl2).controller('Ctrl3', Ctrl3);
Ctrl1.$inject = ['$scope'];
function Ctrl1($scope) { $scope.test="test 1"}
Ctrl2.$inject = ['$scope'];
function Ctrl2($scope) {}
Ctrl3.$inject = ['$scope'];
function Ctrl3($scope) {}
})();
Otrzymamy
Ctrl1: test 1
Ctrl2: test 1
Ctrl3: test 1
Co się stanie?
(function () {
angular
.module('app', []).controller('Ctrl1', Ctrl1)
.controller('Ctrl2', Ctrl2).controller('Ctrl3', Ctrl3);
Ctrl1.$inject = ['$scope'];
function Ctrl1($scope) {}
Ctrl2.$inject = ['$scope'];
function Ctrl2($scope) {}
Ctrl3.$inject = ['$scope'];
function Ctrl3($scope) {$scope.test="test 3"}
})();
Otrzymamy
Ctrl1:
Ctrl2:
Ctrl3: test 3
Dzieci chętnie korzystają z zasobów
rodziców, odwrotnie to nie działa, trochę
tak jak w życiu ;)
Controller As
<div ng-controller="Ctrl1 as vm">
Ctrl1: {{vm.test}}
<div ng-controller="Ctrl2 as vm">
Ctrl2: {{vm.test}}
<div ng-controller="Ctrl3 as vm">
Ctrl3: {{vm.test}}
</div>
</div>
</div>
Co się stanie?
(function () {
angular
.module('app', [])
.controller('Ctrl1', Ctrl1)
.controller('Ctrl2', Ctrl2)
.controller('Ctrl3', Ctrl3);
Ctrl1.$inject = ['$scope'];
function Ctrl1($scope) { $scope.vm={ test : 'test 1' } };
Ctrl2.$inject = ['$scope'];
function Ctrl2($scope) {}
Ctrl3.$inject = ['$scope'];
function Ctrl3($scope) {}
})();
Otrzymamy
Ctrl1: test 1
Ctrl2:
Ctrl3:
Controller As bez $scope
<div ng-controller="Ctrl1 as vm">
Ctrl1: {{vm.test}}
<div ng-controller="Ctrl2 as vm">
Ctrl2: {{vm.test}}
<div ng-controller="Ctrl3 as vm">
Ctrl3: {{vm.test}}
</div>
</div>
</div>
Gdzie jest $scope?
(function () {
angular
.module('app', [])
.controller('Ctrl1', Ctrl1)
.controller('Ctrl2', Ctrl2)
.controller('Ctrl3', Ctrl3);
function Ctrl1() {}
function Ctrl2() { var vm = this; vm.test = 'test 2';}
function Ctrl3() {}
})();
Otrzymamy
Ctrl1:
Ctrl2: test 2
Ctrl3:
Nie ma $scope a jednak działa i nie jest to
Angular2
Czy można bardziej czytelnie?
<div ng-controller="Ctrl1 as ctrl1">
Ctrl1: {{ctrl1.test}}
<div ng-controller="Ctrl2 as ctrl2">
Ctrl2: {{ctrl2.test}}
<div ng-controller="Ctrl3 as ctrl3">
Ctrl3: {{ctrl3.test}}
</div>
</div>
</div>
Podmieniamy vm na nazwę kontrolera
Ale nic nie zmieniamy w kodzie JavaScript!
(function () {
angular
.module('app', [])
.controller('Ctrl1', Ctrl1)
.controller('Ctrl2', Ctrl2)
.controller('Ctrl3', Ctrl3);
function Ctrl1() {}
function Ctrl2() { var vm = this; vm.test = 'test 2';}
function Ctrl3() {}
})();
Tu nadal pozostaje vm
ctrl2 jest rozpoznane jako vm
<div ng-controller="Ctrl2 as ctrl2">
Ctrl2: {{ctrl2.test}}
function Ctrl2() {
var vm = this;
vm.test = 'test 2';
}
A jeśli przypiszemy vm do $scope?
(function () {
angular
.module('app', [])
.controller('Ctrl1', Ctrl1)
.controller('Ctrl2', Ctrl2)
.controller('Ctrl3', Ctrl3);
Ctrl1.$inject = ['$scope'];
function Ctrl1($scope) { $scope.vm = this; }
Ctrl2.$inject = ['$scope'];
function Ctrl2($scope) { $scope.vm = this; $scope.vm.test = 'test 2'; }
Ctrl3.$inject = ['$scope'];
function Ctrl3($scope) { $scope.vm = this; }
})();
Nie zalecane!
Oraz wrócimy do klasycznej składni
<div ng-controller="Ctrl1">
Ctrl1: {{vm.test}}
<div ng-controller="Ctrl2">
Ctrl2: {{vm.test}}
<div ng-controller="Ctrl3">
Ctrl3: {{vm.test}}
</div>
</div>
</div>
Otrzymamy
Ctrl1:
Ctrl2: test 2
Ctrl3:
Po co cała ta zabawa?
Jeśli używasz tylko bindowania
danych, nie musisz używać $scope!
Co jednak gdy $scope jest potrzebny?
Watro pomyśleć o przeniesieniu tej
funkcjonalności poza kontroler.
controllerAs - html
<div ng-controller="Ctrl1">
<div ng-controller="Ctrl1 as vm">
<div ng-controller="Ctrl1 as ctrl1">
controllerAs - routing
config: {
templateUrl: 'strona1.html',
controller: 'Ctrl1',
controllerAs: 'vm'
}
Dziękuję za uwagę
Dariusz Kalbarczyk
ngkalbarczyk@gmail.com
https://pl.linkedin.com/in/ngkalbarczyk
https://www.facebook.com/dkalbarczyk
https://twitter.com/ngKalbarczyk
http://ng-poland.pl
http://www.meetup.com/AngularJS-Warsaw

More Related Content

Similar to AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"

Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJSSages
 
Architektura ngrx w angular 2+
Architektura ngrx w angular 2+Architektura ngrx w angular 2+
Architektura ngrx w angular 2+Paweł Żurowski
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPLaravel Poland MeetUp
 
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016PROIDEA
 
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawyApptension
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Quick-Solution
 
Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7DreamLab
 
Lexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closuresLexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closuresBrainhub
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PROIDEA
 
WJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof Ślusarski
WJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof ŚlusarskiWJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof Ślusarski
WJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof ŚlusarskiKrzysztof Ślusarski
 
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
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztatyintive
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!The Software House
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravel Poland MeetUp
 
Angular js warsztaty stopień 2
Angular js   warsztaty stopień 2Angular js   warsztaty stopień 2
Angular js warsztaty stopień 2Marcin Wosinek
 
GraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem ApolloGraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem ApolloBoldare
 
Reactive programming
Reactive programmingReactive programming
Reactive programmingSunscrapers
 
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVMKopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVMArtur Skowroński
 

Similar to AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as" (20)

Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJS
 
Architektura ngrx w angular 2+
Architektura ngrx w angular 2+Architektura ngrx w angular 2+
Architektura ngrx w angular 2+
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
 
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawy
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?
 
Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7
 
Lexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closuresLexical scope, function vs. block scope, hoisting, scope closures
Lexical scope, function vs. block scope, hoisting, scope closures
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
 
WJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof Ślusarski
WJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof ŚlusarskiWJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof Ślusarski
WJUG #257 Just-In-Time compiler - ukryty "przyjaciel" - Krzysztof Ślusarski
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)
 
Kickoff to Node.js
Kickoff to Node.jsKickoff to Node.js
Kickoff to Node.js
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
 
Angular js warsztaty stopień 2
Angular js   warsztaty stopień 2Angular js   warsztaty stopień 2
Angular js warsztaty stopień 2
 
GraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem ApolloGraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem Apollo
 
Reactive programming
Reactive programmingReactive programming
Reactive programming
 
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVMKopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVM
 

AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"

  • 1.
  • 2. Czysty kod - "Controller as" w obronie kanciastego. Dariusz Kalbarczyk 2015-10-22
  • 3. Dziękuję za to że jesteście z nami dzisiaj.
  • 4. Co ja tutaj robię ;) http://goo.gl/ZFvbc8 http://goo.gl/9OUbV7
  • 5. Angular Module Angular Module Config Routs View Controllers Directives Factories $scope
  • 6. Kontroler – JavaScript’owy konstruktor // JavaScript Constructor function Car(){ this.model = 'RANGE ROVER'; this.price = 300000; this.engine = '3.0 V6' } // za każdym razem kiedy otwieramy kontroler, tworzymy nową instancję var sale = new Car();
  • 7. Klasyczne wywołanie kontrolera angular .module('app.cars') .controller('Car', Car); function Car($scope){ $scope.model = 'RANGE ROVER'; $scope.price = 300000; $scope.engine = '3.0 V6'; } $scope
  • 8. Składnia - Controller As angular .module('app.cars') .controller('Car', Car); function Car(){ var vm = this; vm.model = 'RANGE ROVER'; vm.price = 300000; vm.engine = '3.0 V6'; } vm = this
  • 9. $scope vs VM angular .module('app.cars') .controller('Car', Car); function Car($scope){ console.log('scope ',$scope); };
  • 10. $scope vs VM angular .module('app.cars') .controller('Car', Car); function Car(){ var vm = this; console.log('vm ', vm); };
  • 11. $scope • $id • $apply • $digest • $watch • $broadcast • $destroy • $emit • $eval
  • 12. $scope • $new • $on • $parnet • $root • $watchCollection • $evalAsync • …
  • 13. Zagnieżdżanie kontrolerów <div ng-controller="Ctrl1"> {{test}} <div ng-controller="Ctrl2"> {{test}} <div ng-controller="Ctrl3"> {{test}} </div> </div> </div> Która wartość zostanie wyświetlona?
  • 14. Bardziej czytelnie <div ng-controller="Ctrl1"> {{ctrl1.test}} <div ng-controller="Ctrl2"> {{ctrl2.test}} <div ng-controller="Ctrl3"> {{ctrl3.test}} </div> </div> </div>
  • 15. Co się stanie? <div ng-controller="Ctrl1"> Ctrl1: {{test}} <div ng-controller="Ctrl2"> Ctrl2: {{test}} <div ng-controller="Ctrl3"> Ctrl3: {{test}} </div> </div> </div>
  • 16. Co się stanie? (function () { angular .module('app', []).controller('Ctrl1', Ctrl1) .controller('Ctrl2', Ctrl2).controller('Ctrl3', Ctrl3); Ctrl1.$inject = ['$scope']; function Ctrl1($scope) { $scope.test="test 1"} Ctrl2.$inject = ['$scope']; function Ctrl2($scope) {} Ctrl3.$inject = ['$scope']; function Ctrl3($scope) {} })();
  • 17. Otrzymamy Ctrl1: test 1 Ctrl2: test 1 Ctrl3: test 1
  • 18. Co się stanie? (function () { angular .module('app', []).controller('Ctrl1', Ctrl1) .controller('Ctrl2', Ctrl2).controller('Ctrl3', Ctrl3); Ctrl1.$inject = ['$scope']; function Ctrl1($scope) {} Ctrl2.$inject = ['$scope']; function Ctrl2($scope) {} Ctrl3.$inject = ['$scope']; function Ctrl3($scope) {$scope.test="test 3"} })();
  • 19. Otrzymamy Ctrl1: Ctrl2: Ctrl3: test 3 Dzieci chętnie korzystają z zasobów rodziców, odwrotnie to nie działa, trochę tak jak w życiu ;)
  • 20. Controller As <div ng-controller="Ctrl1 as vm"> Ctrl1: {{vm.test}} <div ng-controller="Ctrl2 as vm"> Ctrl2: {{vm.test}} <div ng-controller="Ctrl3 as vm"> Ctrl3: {{vm.test}} </div> </div> </div>
  • 21. Co się stanie? (function () { angular .module('app', []) .controller('Ctrl1', Ctrl1) .controller('Ctrl2', Ctrl2) .controller('Ctrl3', Ctrl3); Ctrl1.$inject = ['$scope']; function Ctrl1($scope) { $scope.vm={ test : 'test 1' } }; Ctrl2.$inject = ['$scope']; function Ctrl2($scope) {} Ctrl3.$inject = ['$scope']; function Ctrl3($scope) {} })();
  • 23. Controller As bez $scope <div ng-controller="Ctrl1 as vm"> Ctrl1: {{vm.test}} <div ng-controller="Ctrl2 as vm"> Ctrl2: {{vm.test}} <div ng-controller="Ctrl3 as vm"> Ctrl3: {{vm.test}} </div> </div> </div>
  • 24. Gdzie jest $scope? (function () { angular .module('app', []) .controller('Ctrl1', Ctrl1) .controller('Ctrl2', Ctrl2) .controller('Ctrl3', Ctrl3); function Ctrl1() {} function Ctrl2() { var vm = this; vm.test = 'test 2';} function Ctrl3() {} })();
  • 25. Otrzymamy Ctrl1: Ctrl2: test 2 Ctrl3: Nie ma $scope a jednak działa i nie jest to Angular2
  • 26. Czy można bardziej czytelnie? <div ng-controller="Ctrl1 as ctrl1"> Ctrl1: {{ctrl1.test}} <div ng-controller="Ctrl2 as ctrl2"> Ctrl2: {{ctrl2.test}} <div ng-controller="Ctrl3 as ctrl3"> Ctrl3: {{ctrl3.test}} </div> </div> </div> Podmieniamy vm na nazwę kontrolera
  • 27. Ale nic nie zmieniamy w kodzie JavaScript! (function () { angular .module('app', []) .controller('Ctrl1', Ctrl1) .controller('Ctrl2', Ctrl2) .controller('Ctrl3', Ctrl3); function Ctrl1() {} function Ctrl2() { var vm = this; vm.test = 'test 2';} function Ctrl3() {} })(); Tu nadal pozostaje vm
  • 28. ctrl2 jest rozpoznane jako vm <div ng-controller="Ctrl2 as ctrl2"> Ctrl2: {{ctrl2.test}} function Ctrl2() { var vm = this; vm.test = 'test 2'; }
  • 29. A jeśli przypiszemy vm do $scope? (function () { angular .module('app', []) .controller('Ctrl1', Ctrl1) .controller('Ctrl2', Ctrl2) .controller('Ctrl3', Ctrl3); Ctrl1.$inject = ['$scope']; function Ctrl1($scope) { $scope.vm = this; } Ctrl2.$inject = ['$scope']; function Ctrl2($scope) { $scope.vm = this; $scope.vm.test = 'test 2'; } Ctrl3.$inject = ['$scope']; function Ctrl3($scope) { $scope.vm = this; } })(); Nie zalecane!
  • 30. Oraz wrócimy do klasycznej składni <div ng-controller="Ctrl1"> Ctrl1: {{vm.test}} <div ng-controller="Ctrl2"> Ctrl2: {{vm.test}} <div ng-controller="Ctrl3"> Ctrl3: {{vm.test}} </div> </div> </div>
  • 32. Po co cała ta zabawa? Jeśli używasz tylko bindowania danych, nie musisz używać $scope!
  • 33. Co jednak gdy $scope jest potrzebny? Watro pomyśleć o przeniesieniu tej funkcjonalności poza kontroler.
  • 34. controllerAs - html <div ng-controller="Ctrl1"> <div ng-controller="Ctrl1 as vm"> <div ng-controller="Ctrl1 as ctrl1">
  • 35. controllerAs - routing config: { templateUrl: 'strona1.html', controller: 'Ctrl1', controllerAs: 'vm' }
  • 36. Dziękuję za uwagę Dariusz Kalbarczyk ngkalbarczyk@gmail.com https://pl.linkedin.com/in/ngkalbarczyk https://www.facebook.com/dkalbarczyk https://twitter.com/ngKalbarczyk http://ng-poland.pl http://www.meetup.com/AngularJS-Warsaw