It's really simple actually. You can just get the text with element.val() but you need to put it into setTimeout.
I did an example for you.
Working JSFiddle: http://jsfiddle.net/vxcjw45d/
HTML:
<body ng-app="myApp"> <div ng-controller="myController"> <textarea paste-example></textarea> <div>{{ pastedText }}</div> </div> </body>
Javascript:
var myApp = angular.module('myApp', []); myApp.controller('myController', function($scope) { $scope.pastedText = ''; }); myApp.directive('pasteExample', function(){ var linkFn = function(scope, element, attrs) { element.on('paste', function() { setTimeout(function() { console.log(element.val()); scope.pastedText = element.val(); scope.$apply(); }, 5); }); }; return { restrict: 'A', link: linkFn }; });