以编程方式上传ng-flow

Jul*_*lio 9 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>
Run Code Online (Sandbox Code Playgroud)

这似乎工作,我可以看到网络请求出去.我在点击时找到了flow.js上传文件,并尝试按照建议的答案,但$flow在相应的功能中未定义.

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

lec*_*tor 12

首先,flow-files-submitted当用户选择文件(误导性名称)时触发事件.因此,当您分配$flow.upload()给它时,您可以在文件选择后立即上传.

第二件事是在控制器中获取$ flow对象.我想到了两种方式:

A.正如指示所说,你必须使用flow-name属性:

<div flow-init flow-name="obj.flow">
Run Code Online (Sandbox Code Playgroud)

然后你可以参考$flow你的$scope.obj.flow属性,你可以$scope.obj.flow.upload()在控制器的任何地方使用方法.

B.将"上传"按钮放在flow指令块内(作为带flow-init属性的元素的后代),并使用$flow指令作用域的属性作为参数ng-click,例如:

<button type="button" ng-click="myUploadMedhot($flow)">Upload</button>
Run Code Online (Sandbox Code Playgroud)

在里面myUploadMethod(param)打电话param.upload().