Edit in JSFiddle

(function(window, document) {
  'use strict';

  var angular = window.angular;
  var module = angular.module('App', []);


  module.controller('Sample1', [
    '$scope',
    function($scope) {
      $scope.$watch('text1', function() {
        window.console.log($scope.text1);
      });
    }
  ]);

  module.controller('Sample2', [
    '$scope',
    function($scope) {
      $scope.$watch('text2', function() {
        window.console.log($scope.text2);
      });
    }
  ]);

  module.controller('Sample3', [
    '$scope',
    function($scope) {
      $scope.$watch('text3', function() {
        window.console.log($scope.text3);
      });
    }
  ]);

  module.controller('Sample4', [
    '$scope',
    function($scope) {
      $scope.$watch('text4', function() {
        window.console.log($scope.text4);
      });
    }
  ]);

  module.directive('ngDropCopy', [
    '$parse',
    '$rootScope',
    function($parse, $rootScope) {
      return {
        'restrict' : 'A',
        'require': '^ngModel',
        'scope' : {
          'ngModel' : '='
        },
        'link': function(scope, element) {
          element.on('input propertychange', function(event) {
            scope.ngModel = element.val();
            if ($rootScope.$$phase) {
              scope.$evalAsync();
            }
            else {
              scope.$apply();
            }
          });
        }
      };
    }
  ]);

})(window, document);
<div ng-app="App">
  <div>
    <p>Drag&amp;Drop a Text to input[type="text"] or textarea (IE11)</p>
  </div>
  
  <h2>Not Use "ngDropCopy"</h2>
  <div class="not_use">
    <div ng-controller="Sample1">
      <input type="text" ng-model="text1" />
      <p>↑ng-model="text1":{{text1}}</p>
    </div>
    <br />
    <div ng-controller="Sample2">
      <textarea ng-model="text2"></textarea>
      <p>↑ng-model="text2":{{text2}}</p>
    </div>
  </div>
  <br />
  <h2>Use "ngDropCopy"</h2>
  <div class="use">
    <div ng-controller="Sample3">
      <input type="text" ng-model="text3" ng-drop-copy />
      <p>↑ng-model="text3":{{text3}}</p>
    </div>
    <div ng-controller="Sample4">
      <textarea ng-model="text4" ng-drop-copy></textarea>
      <p>↑ng-model="text4":{{text4}}</p>
    </div>
  </div>
</div>
.not_use {
  border: 1px black solid;
  padding: 10px;
  margin: 10px;
}

.use {
  border: 1px black solid;
  padding: 10px;
  margin: 10px;
}