我目前正在使用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 upload file on click并尝试按照建议的答案,但$flow
在各自的功能中未定义。
那么,如何使用ng-flow以编程方式上传文件?
答案 0 :(得分:13)
首先,当用户选择文件(误导性名称)时会触发flow-files-submitted
事件。因此,当您为其指定$flow.upload()
时,您可以在文件选择后立即上传。
第二件事是在控制器中获取$ flow对象。我想到了两种方式:
一个。正如指示所说,您必须使用flow-name
属性:
<div flow-init flow-name="obj.flow">
然后您在$flow
属性中引用了$scope.obj.flow
,您可以在控制器的任何位置使用$scope.obj.flow.upload()
方法。
B中。将“上传”按钮放在flow指令块中(作为具有flow-init
属性的元素的后代)并使用指令作用域的$flow
属性作为ng-click
中的参数,例如:
<button type="button" ng-click="myUploadMedhot($flow)">Upload</button>
和myUploadMethod(param)
内部只需致电param.upload()
。