使用ng-file-select调用上传功能

时间:2016-03-13 09:47:36

标签: javascript angularjs

我正在尝试使用Angular的ng-file-select指令将文件上传到云端。只有在提交包含上载字段的表单时,才应调用上传图像的函数。代码如下:

<form class="form-horizontal" name="reviewEntry" role="form" ng-controller="reviewController" ng-submit="submitFeedback(reviewer.image)" novalidate>   
    ...
    <input type="file" id="image" name="image" ng-file-select="onFileSelect($files)" accept="image/*" ngf-max-size="5MB" ngf-model-invalid="errorFiles">
    ...       
</form>

我的控制器代码:

$scope.submitFeedback = function(file) {

    $scope.showSuccess = false;
    $scope.message = "Loading ...";

    var review = {
        name: $scope.reviewer.name,
        model: $scope.reviewer.model,
        image: $scope.reviewer.image,
        review: $scope.reviewer.review
    };

    $scope.onFileSelect = function(files) {

    if (files && files.length) {
        $scope.file = files[0];
    }
    alert("ON FILE SELECT");

    Upload.upload({

        url: '/images/upload',
        method: 'POST',
        file: $scope.file

    }).success(function(data) {
        console.log("SUCCESS: " + data);
    }).error(function(err) {
        console.log("ERROR: " + err.message);
    });

    ...
};

但是,onFileSelect内的submitFeedback永远不会被调用(没有警告框) - 只有在按下提交按钮后才能进行上传。我对Angular比较陌生 - 有谁可以帮我解决这个问题?

1 个答案:

答案 0 :(得分:1)

编辑:在文件选择事件上调用onFileSelect。您不应该在submitFeedback函数中定义该函数。因此,请$scope.onFileSelect移出$scope.submitFeedback

此外,当您移动它时,您需要更改它并让$scope.submitFeedback具有上传逻辑,而不是$scope.onFileSelect功能。