Загрузка 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()
,