9

我目前正在使用 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 以编程方式上传文件?

4

1 回答 1

12

首先,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()

于 2015-04-02T11:10:26.370 回答