以编程方式上传ng-flow

时间:2014-12-19 04:51:22

标签: javascript angularjs 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 upload file on click并尝试按照建议的答案,但$flow在各自的功能中未定义。

那么,如何使用ng-flow以编程方式上传文件?

1 个答案:

答案 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()