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');
}
}
};
});

