Использование Angular1 в моем приложении. Необходимо вызвать функцию, когда пользователь перетаскивает некоторый файл в определенную область (div). Я пробовал ondragenter, но функция, определенная в контроллере, в этом случае недоступна. Жестко, работает функция предупреждения в ondragenter. Есть ли какая-либо замена в Angular1 для onDragEnter? Или, как я могу создать новую директиву для этого же?
В проекте, в котором я работаю, у меня есть пример перетаскивания и ввода файла. Может быть, это может вам помочь. В этом случае я импортирую таблицу Excel в ui-grid в своем приложении. Но вы могли бы назвать любую директиву вообще.
В HTML это мой ввод:
<label class="btn btn-default btn-file">
Upload file
<input type="file" accept=".xls,.xlsx,.ods" fileread="" opts="vm.gridOptions" multiple="false" />
</label>
Это первая половина директивы, которая называется после ввода (остальная часть директивы - это только моя логика импорта приложения):
.directive("fileread", [function() {
return {
scope: {
opts: '='
},
link: function($scope, $elm, $attrs) {
$elm.on('change', function(changeEvent) {
var reader = new FileReader();
//var evt = evt;
reader.onload = function(evt) {
$scope.$apply(function() {
var myEvent = ((window.event)?(event):(evt));
//get the Element which this event is all about
var Element = ((window.event)?(event.srcElement):(evt.currentTarget));
var data = Element.result;
var workbook = XLSX.read(data, {
type: 'binary'
});
var data = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]]);
Сам код директивы не важен для вашего случая, но обратите внимание, что я ссылаюсь на fileread как на атрибут во входном файле.
Для рабочего примера см. Этот Plunker (это упрощенная версия моей директивы, но это база, которую я использовал):
http://embed.plnkr.co/rYC3nd7undqJz2mr8Old/
Надеюсь, поможет.