【问题标题】:Upload function not getting called with ng-file-select上传功能没有被 ng-file-select 调用
【发布时间】:2016-03-13 18:02:40
【问题描述】:

我正在尝试使用 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);
    });

    ...
};

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

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    编辑:onFileSelect 在文件选择事件中被调用。您不应在 submitFeedback 函数中定义该函数。所以将$scope.onFileSelect移到$scope.submitFeedback之外。

    另外当你移动它的时候,你需要改变它,让$scope.submitFeedback有上传的逻辑,而不是$scope.onFileSelect函数。

    【讨论】:

    • 但是如果我将上传逻辑移到 $scope.submitFeedback,那么拥有 $scope.onFileSelect 函数就毫无意义了。另外,我希望仅在按下提交按钮时才完成上传。
    • 好的,我让它按照你说的方式工作。我在 $scope.onFileSelect 函数中设置了一个 $scope.file 变量,并在提交函数中使用了它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多