Tutorial

http://blog.revolunet.com/blog/2013/11/28/create-resusable-angularjs-input-component/

 

http://blog.safaribooksonline.com/2013/11/07/creating-an-angularjs-component/

 


simpleApp.directive( 'fundooRating', function() {
        return {
            restrict: 'E',
            template: '<ul class="rating">' +
                '<li ng-repeat="star in stars" ng-class="star" ng-click="toggle($index)">' +
                '\u2605' +
                '</li>' +
                '</ul>',
            scope: {
                ratingValue: '=',
                max: '=',
                readonly:'@',
                onRatingSelected: '&'
            },
            link: function( scope, elem, attrs) {


                var updateStars = function() {
                    scope.stars = [];
                    for (var i = 0; i < scope.max; i++) {
                        scope.stars.push({filled: i < scope.ratingValue});
                    }
                };

                scope.toggle = function(index) {
                    if (scope.readonly && scope.readonly === 'true') {
                        return;
                    }
                    scope.ratingValue = index + 1;
                    scope.onRatingSelected({rating: index + 1});
                };

                scope.$watch('ratingValue', function(oldVal, newVal) {
                        if (newVal) {
                            updateStars();
                        }
                    }

                );
            }
        }

    }
);

 

  • ‘A’ – Attribute (You want to use your directive as <div rating>)
  • ‘E’ – Element (Use it as <rating>)
  • ‘C’ – Class. (Use it like <div class=”rating”>)
  • ‘M’ – Comment (Use it like <!– directive: rating –>