How to call a method defined in an AngularJS directive? How to call a method defined in an AngularJS directive? angularjs angularjs

How to call a method defined in an AngularJS directive?


If you want to use isolated scopes you can pass a control object using bi-directional binding = of a variable from the controller scope. You can also control also several instances of the same directive on a page with the same control object.

angular.module('directiveControlDemo', []).controller('MainCtrl', function($scope) {  $scope.focusinControl = {};}).directive('focusin', function factory() {  return {    restrict: 'E',    replace: true,    template: '<div>A:{{internalControl}}</div>',    scope: {      control: '='    },    link: function(scope, element, attrs) {      scope.internalControl = scope.control || {};      scope.internalControl.takenTablets = 0;      scope.internalControl.takeTablet = function() {        scope.internalControl.takenTablets += 1;      }    }  };});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script><div ng-app="directiveControlDemo">  <div ng-controller="MainCtrl">    <button ng-click="focusinControl.takeTablet()">Call directive function</button>    <p>      <b>In controller scope:</b>      {{focusinControl}}    </p>    <p>      <b>In directive scope:</b>      <focusin control="focusinControl"></focusin>    </p>    <p>      <b>Without control object:</b>      <focusin></focusin>    </p>  </div></div>