Загрузка ng-flow программно

В настоящее время я использую ng-flow для загрузки файла. Похоже, что действие по умолчанию выбора файла заключается в немедленной загрузке. Я хотел бы переопределить это, чтобы файлы были выбраны и загружены только при нажатии кнопки. Возможно, я неправильно читаю документацию, но пока у меня есть следующее:

<div flow-init="{target: '/upload'}"
     flow-files-submitted="$flow.upload()"
     flow-file-success="$file.msg = $message">

  <input type="file" flow-btn/>
  Input OR Other element as upload button
  <span class="btn" flow-btn>Upload File</span>

  <table>
    <tr ng-repeat="file in $flow.files">
        <td>{{$index+1}}</td>
        <td>{{file.name}}</td>
        <td>{{file.msg}}</td>
    </tr>
  </table>
</div>

Кажется, это работает, и я вижу, что сетевой запрос уходит. Я щелкнул файл загрузки файла flow.js и попытался выполнить предложенный ответ, однако $flow был неопределен в соответствующей функции.

Итак, как можно программно загружать файлы, используя ng-flow?

1 ответ

Решение

Вначале, flow-files-submitted Событие запускается, когда пользователь выбирает файл (вводящее в заблуждение имя). Поэтому, когда вы назначаете $flow.upload() к нему вы делаете загрузку сразу после выбора файла.

Второе - получить объект $flow в вашем контроллере. Мне приходит в голову два способа:

A. Как сказано в инструкции, вы должны использовать flow-name атрибут:

<div flow-init flow-name="obj.flow">

Тогда у вас есть ссылка на $flow в твоем $scope.obj.flow собственность, и вы можете использовать $scope.obj.flow.upload() метод в любом месте вашего контроллера.

B. Поместите кнопку "Загрузить" в блок директивы потока (как потомок элемента с flow-init атрибут) и использовать $flow свойство области действия директивы как параметра в ng-click, например:

<button type="button" ng-click="myUploadMedhot($flow)">Upload</button>

и внутри myUploadMethod(param) просто позвони param.upload(),

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