Событие onDragEnter не работает в Angular

0

Использование Angular1 в моем приложении. Необходимо вызвать функцию, когда пользователь перетаскивает некоторый файл в определенную область (div). Я пробовал ondragenter, но функция, определенная в контроллере, в этом случае недоступна. Жестко, работает функция предупреждения в ondragenter. Есть ли какая-либо замена в Angular1 для onDragEnter? Или, как я могу создать новую директиву для этого же?

Теги:

1 ответ

1

В проекте, в котором я работаю, у меня есть пример перетаскивания и ввода файла. Может быть, это может вам помочь. В этом случае я импортирую таблицу 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/

Надеюсь, поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню