Before clicking:
After clicking:
To simplify the example i'm using the code of angular phonecat tuttorial.
In the example we need to display the snippet property of phone object
html markup:
Directive declaration:
/* app\js\directives.js */ var phonecatDirectives = angular.module('phonecatDirectives', []); phonecatDirectives.directive('zippy', function () { return { restrict: "E", replace: true, transclude: false, scope: { title:'@zippyTitle' }, template: '{{title}}' , // The linking function will add behavior to the template link: function(scope, element, attrs) { var opened=true; scope.$watch('title',function(newVal, oldVal){ element.html(scope.title.substr(0,10)+' ...'); // Title element var title = angular.element(element.children()[0]), // Opened / closed state opened = true; // Clicking on title should open/close the zippy title.on('click', toggle); }) // Toggle the closed/opened state function toggle() { if(opened) element.text(scope.title) opened = !opened; //element.removeClass(opened ? 'closed' : 'opened'); //element.addClass(opened ? 'opened' : 'closed'); } } }; });