2015-07-07 4 views
2

Я не пытаюсь захватить событие, когда пользователь закрыть или отменить File Upload окнаAngularJs: document.body.onfocus внутри контроллера директивы

<input type="file">

Поскольку там нет встроенного в слушателе для близкого события из загрузить файл, я пытаюсь захватить его через document.body.focus событие, что-то вроде одного suggested here

Я получаю его запустить с помощью JavaScript

document.body.onfocus = function() { console.log("hit me") } 

Теперь мне нужно реализовать его в Angular в моей директиве, чтобы я мог поместить логику внутри события focus, используя объекты в контроллере.

Как получить доступ к onfocus событиям document.body внутри углового контроллера?

От @Phil предложение (используя ссылку)

... this is a directive with controller 
angular.directive("addPost", addPost); 

addPost.$inject = ["$document", "$log"]; 

function addPost($document, $log) { 

    return { 
     ... 
     link: link, 
     ... 
    }; 

    function link() { 
     $document.find('body').on('focus', function (e) { 
      $log.debug('HIT ME!'); 
     }); 
    } 
+3

Попробуйте использовать 'ng-focus'. –

+0

@ AlbertoI.N.J. в моем приложении элемент '' находится за пределами угловой области, я имею в виду, что он находится в режиме MVC. Как я могу привязать к нему ng-focus? –

+1

Вы можете попробовать '$ document.find ('body'). On ('focus', function (e) {...})' – Phil

ответ

3

Используйте функцию link/postLink для выполнения операций DOM. Например,

.directive('addPost', ['$document', '$log', function($document, $log) { 
    return { 
     // snip 
     require: 'addPost', 
     link: function postLink(scope, element, attr, addPostCtrl) { 
      // scope is shared with the controller 
      // you can also access properties on the controller itself 
      // via addPostCtrl 
      $document.find('body').on('focusin', function(e) { 
       $log.debug('HIT ME!'); 
      }); 
     } 
    }; 
}]); 
+0

Пробовал.Как-то - фокусное событие не попадает. –

+0

@ LincAbela делать любые * фокус * события на самом деле происходят? – Phil

+0

это мой вариант использования, у меня есть «Загрузка файла», и я ожидаю, когда я закрою окно загрузки файла, он должен попасть в 'document.body.focus' - я протестировал его с помощью javascript, и он попал в фокусное событие. просто пытаясь реализовать его в угловом. Имеет ли это смысл? –

Смежные вопросы