reusable/inter-operable AngularJS directive