AngularJS 实现paste事件directive

AngularJS是一个不好驾驭的MVVM框架, 框架的概念理解起来不容易, 这次为了实现一个ngClick那样的paste事件directive, 我在Google上耗了将近一个下午, 可还是无果而归.

最后, 我在AngularJS的源码中找到了ngClick等directive的实现, 对照着才写出了能用的ngPaste, 我相信会有人像我一样遇到要实现paste事件directive的情况, 所以写一篇文章记录一下这个只有12行代码的ngPaste(当然, 用ng命名空间不是什么好习惯, 请改成你自己的), 希望能够对正在学习AngularJS的JSer有所帮助.

JavaScript Code

MyApp.directive('ngPaste', function($parse, $timeout){  
  return function(scope, element, attrs){
    fn = $parse(attrs['ngPaste']);
    element.on('paste', function(event){
      $timeout(function(){
        scope.$apply(function(){
          fn(scope, {$event: event});
        });
      });
    });
  };
});

CoffeeScript Code

MyApp.directive 'ngPaste', ($parse, $timeout) ->  
    (scope, element, attrs) ->
        fn = $parse attrs['ngPaste']
        element.on 'paste', (event)->
            $timeout ->
                scope.$apply ->
                    fn scope, $event:event