var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.output = [];
  $scope.items = [{name: 'foo', click: false}, {name: 'bar', click: true}];
  $scope.write = function(line, event) {
    console.log(event);
    $scope.output.push(line += ' | Event: ' + event);
  };
});

app.directive('myClick', function() {
  return {
    restrict: 'A',
    scope: { myClick: '&' },
    link: function(scope, element, attrs) {
      attrs.$observe('disable', function(val) {
        if (val == 'true' || val == 1) {
          element.off('click');
        } else {
          element.on('click', function(e) {
            scope.$apply(function() {
              scope.myClick({'$event': e});
            });
          });
        }
      });
    }
  };
});
<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.25/angular.js" data-semver="1.2.25"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <label>Foo click enabled<input type="checkbox" ng-model="items[0].click"></label>
    <label>Bar click enabled<input type="checkbox" ng-model="items[1].click"></label><br>
    <button ng-repeat="item in items" my-click="write('clicked ' + item.name + '!', $event)" disable="{{!item.click}}">{{item.name}} Click: {{item.click}}</button>
    

      <ul>
        <li ng-repeat="line in output track by $index">{{$index}}: {{line}}</li>
      </ul>
   
  </body>

</html>
/* Put your css in here */