2014-12-19 59 views
9

我目前使用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以編程方式上傳文件?

回答

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屬性的後代)和ng-click使用指令範圍的$flow屬性作爲參數,例如:

<button type="button" ng-click="myUploadMedhot($flow)">Upload</button> 

和裏面myUploadMethod(param)只需撥打param.upload()