我正在尝试在我的服务中编写一个非常简单的函数,它将创建一个FileReader,读取我发送给它的小图像文件,并将这个结果以承诺的形式返回给我的控制器。这份文件很适合我的工作。它到达我的控制器,只记录了一个空行。我想我搞砸了这件事的承诺部分。我哪里出错了?
服务功能--
this.fileRead = function(file) {
var deferred = $q.defer();
var reader = new FileReader();
reader.readAsDataURL(file);
deferred.resolve(reader.result);
return deferred.promise;
};
控制器功能--
$scope.onFileSelect = function($files) {
MyService.fileRead($files[0])
.then(function(result) {
console.log(result);
});
};
您没有onload事件,因此它实际上不会返回读取的文件数据。
this.fileRead = function(file) {
var deferred = $q.defer();
var reader = new FileReader();
reader.onload = function() {
deferred.resolve(reader.result);
};
reader.readAsDataURL(file);
return deferred.promise;
};