我正在尝试使用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比较陌生 - 有谁可以帮我解决这个问题?
答案 0 :(得分:1)
编辑:在文件选择事件上调用onFileSelect。您不应该在submitFeedback函数中定义该函数。因此,请$scope.onFileSelect
移出$scope.submitFeedback
。
此外,当您移动它时,您需要更改它并让$scope.submitFeedback
具有上传逻辑,而不是$scope.onFileSelect
功能。