Javascript HTML5文件读取器API:事件';onload';不开火
我是AngularJS、HTML5和JavaScript的新手。我正在用angularjs做一项服务,它可以读取文本文件。我正在使用HTML5文件读取器API。问题是事件“onload”(或其他)没有触发。这是服务:Javascript HTML5文件读取器API:事件';onload';不开火,javascript,html,angularjs,Javascript,Html,Angularjs,我是AngularJS、HTML5和JavaScript的新手。我正在用angularjs做一项服务,它可以读取文本文件。我正在使用HTML5文件读取器API。问题是事件“onload”(或其他)没有触发。这是服务: angular.module('uploadFiles').factory('readFileAsTextService', function () { return { readFile: function (file) { var
angular.module('uploadFiles').factory('readFileAsTextService', function () {
return {
readFile: function (file) {
var reader = new FileReader();
if (window.File && window.FileReader && window.FileList && window.Blob) {
if ((file !== undefined) && (file !== null)) {
reader.onload = function (event) {
return event.target.result;
};
reader.readAsText(file);
}
}
}
};
});
这里是控制器:
angular.module('uploadFiles').controller('UploadFileController', ['$scope', 'validFileExtensions', 'readRouteAsTextService',
function FileUploadCtrl($scope, validFileExtensions, readFileAsTextService) {
$scope.setFiles = function (element) {
$scope.$apply(function ($scope) {
$scope.files = [];
for (var i = 0; i < element.files.length; i++) {
if validFileExtensions.validate(element.files[i].name,filesExtensions)) {
$scope.files.push(element.files[i]);
filesText[i] = readFileAsTextService.readFile(element.files[i]);
}
}
});
};
}]);
angular.module('uploadFiles').controller('UploadFileController', ['$scope', 'validFileExtensions', 'readRouteAsTextService',
function FileUploadCtrl($scope, validFileExtensions, readFileAsTextService) {
$scope.setFiles = function (element) {
$scope.files = [];
for (var i = 0; i < element.files.length; i++) {
if(validFileExtensions.validate(element.files[i].name,filesExtensions)) {
$scope.files.push(element.files[i]);
(function(i){
readFileAsTextService.readFile(element.files[i]).then(function(text){
filesText[i] = text;
})
})(i);
}
}
};
}]);
angular.module('uploadFiles').controller('UploadFileController',[''$scope','validFileExtensions','ReadRouteEastTextService',',
函数FileUploadCtrl($scope,validFileExtensions,readFileAsTextService){
$scope.setFiles=函数(元素){
$scope.$apply(函数($scope){
$scope.files=[];
对于(var i=0;i
我将展示一个必须工作的代码:
angular.module('uploadFiles').factory('readFileAsTextService', ["$q", function ($q) {
return {
readFile: function (file) {
var deferread = $q.defer();
if (window.File && window.FileReader && window.FileList && window.Blob) {
var reader = new FileReader();
if ((file !== undefined) && (file !== null)) {
reader.onload = function (event) {
deferred.resolve(event.target.result);
};
reader.readAsText(file);
}else{
deferred.resolve("You need to pass a file.");
}
}else{
deferred.resolve("Your browser don't support File api.");
}
return deferread.promise;
}
};
}]);
在控制器中:
angular.module('uploadFiles').controller('UploadFileController', ['$scope', 'validFileExtensions', 'readRouteAsTextService',
function FileUploadCtrl($scope, validFileExtensions, readFileAsTextService) {
$scope.setFiles = function (element) {
$scope.$apply(function ($scope) {
$scope.files = [];
for (var i = 0; i < element.files.length; i++) {
if validFileExtensions.validate(element.files[i].name,filesExtensions)) {
$scope.files.push(element.files[i]);
filesText[i] = readFileAsTextService.readFile(element.files[i]);
}
}
});
};
}]);
angular.module('uploadFiles').controller('UploadFileController', ['$scope', 'validFileExtensions', 'readRouteAsTextService',
function FileUploadCtrl($scope, validFileExtensions, readFileAsTextService) {
$scope.setFiles = function (element) {
$scope.files = [];
for (var i = 0; i < element.files.length; i++) {
if(validFileExtensions.validate(element.files[i].name,filesExtensions)) {
$scope.files.push(element.files[i]);
(function(i){
readFileAsTextService.readFile(element.files[i]).then(function(text){
filesText[i] = text;
})
})(i);
}
}
};
}]);
angular.module('uploadFiles').controller('UploadFileController',[''$scope','validFileExtensions','ReadRouteEastTextService',',
函数FileUploadCtrl($scope,validFileExtensions,readFileAsTextService){
$scope.setFiles=函数(元素){
$scope.files=[];
对于(var i=0;i
告诉我它是否有效。添加一个使用此服务的示例。显示添加了控制器一部分的代码。谢谢为什么在$scope.setFiles中使用$scope.$apply?你在哪里使用它?如果我想在更改后以我的部分html(更新观察程序)显示文件列表,我想我需要它。控制器更长,为了简单起见,我只写了一部分。如果在if语句上出现语法错误,是否会导致进一步的页面处理?