В SPA с Angular и Breeze

У меня есть приложение SPA, которое использует угловые и легкие волны, что позволяет полевому персоналу создавать новые объекты и отправлять их в нашу ERP в режиме реального времени. Они могут делать снимки, а также загружать их (в настоящее время используются устройства iPad, iPhone и Galaxy). Это все работает просто отлично.

Теперь мы хотели бы изменить размеры изображений перед их загрузкой, чтобы сэкономить на пропускной способности, ускорить работу приложения и упростить прикрепление их к сообщениям электронной почты. Я получил plupload (2.1.2) для работы в качестве угловой директивы, и он отлично изменяет размеры / загружает изображения. Проблема в том, что когда создается новая сущность и страница "перезагружается", plupload больше не отвечает. Я использую следующее для поля ввода:

<input type="file"
capture="camera"
accept="image/*"
id="cameraInput"
pl-upload
pl-auto-upload="false"
pl-files-model="files"
pl-multi-params-model="multiParams"
pl-instance="uploadotron"
pl-entity="vm.report"
ng-file-select="vm.handleFile($files)"
ng-disabled="vm.state == 'Unchanged'" />

Опции, которые я использую для plupload:

var options = {runtimes: 'html5', 
       browse_button : 'cameraInput',
       multi_selection: false,
       container: 'uploadcontainer',
       max_file_size: '20mb',
       multiple_queues: false,
       url : '.breeze/Files/Upload',
       flash_swf_url : iAttrs.plFlashSwfUrl,
       silverlight_xap_url : iAttrs.plSilverlightXapUrl,
       filters: [{title : "Image files", extensions : "jpg,jpeg,gif,png,tiff,pdf"}],
       resize: {
           width: 1024,
           height: 768,
           crop: false,
           quality: 90
    }
}

В качестве частичного обходного пути я обнаружил, что передача объекта экземпляра (pl-instance="uploadotron" выше, где uploadotron присоединен к $scope в контроллере) в директиву позволяет мне вручную добавить файл и инициировать загрузку, но это только запускает ng-file-select при каждой второй попытке на iPad. Галактика работает правильно.

Итак, вопросы:

  1. Почему перестанет работать plupload, когда будет добавлен новый объект, и как это исправить? Я добавил кучу операторов console.log и убедился, что инициализация plupload происходит через директиву при перезагрузке страницы, но событие browse больше не срабатывает. Если я полностью покину страницу и вернусь, она снова начнет работать. Это не совсем удобно для пользователя, хотя.

  2. Почему iPad (Safari, iOS 7.1.1) должен вызывать функцию ng-file-select только при каждом втором выборе фото / файла?

Спасибо за любую помощь, которую вы можете оказать мне.

Обновить:

Я решил свою проблему с помощью FileAPI, найденного на github ( https://github.com/mailru/FileAPI/), и написал свою собственную директиву для его вызова. Работает как шарм сейчас. Я думаю, что часть проблемы заключалась в том, что ng-file-select является частью другой директивы, и я не сразу понял это. Это значит, что я по сути смешивал две директивы в одном элементе ввода.

0 ответов

Другие вопросы по тегам