[AngularJS] Exploring the Angular 1.5 .component() method
Angualr 1.4:
.directive('counter', function counter() { return { scope: {},
restrict: 'EA',
transclude: true, bindToController: { count: '=' }, controller: function () { function increment() { this.count++; } function decrement() { this.count--; } this.increment = increment; this.decrement = decrement; }, controllerAs: 'counter', template: [ '<div class="todo">', '<input type="text" ng-model="counter.count">', '<button type="button" ng-click="counter.decrement();">-</button>', '<button type="button" ng-click="counter.increment();">+</button>', '</div>' ].join('') }; });
Angualr1.5:
.compoment('counter', { bindings: { count: '=' }, controller: function () { function increment() { this.count++; } function decrement() { this.count--; } this.increment = increment; this.decrement = decrement; }, controllerAs: 'vm', template: function($element, $attrs){ return [ '<div class="todo">', '<input type="text" ng-model="vm.count">', '<button type="button" ng-click="vm.decrement();">-</button>', '<button type="button" ng-click="vm.increment();">+</button>', '</div>' ].join(''); }, // restrict: 'E', // transclude: true });
- Direcitve need pass in function, compoment need pass in object.
- 'scope' and 'bindToController' can be replaced with just 'bindings'
- by default restrict: 'E'
- by default transclude: true
- by default, if not given controllerAs, angular will create for you and name is the same as compoment name