Я использую нг-если в интерфейсе, как это:
div class="flex-row flex-space-around image-preview-panel" ng-if="files" /* Some Code */ div
Это не работает, как ожидалось, потому что $ сфера не обновляется в момент вызов функции из-за вызова этой функции:
angular.module("mainController", [])
.controller("mainCtrl", function($scope, $state) {
var vm = this;
$scope.files = [];
vm.showThumbnails = function() {
for(var i=0;i<event.target.files.length;i++) {
(function(i, file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
$scope.$apply(function() {
$scope.files[$scope.files.length] = file;
})
}
})(i, event.target.files[i]);
}
}
})
Любой способ решить эту проблему?
Извините, но вы уверены в этой строке? .. что не выведете ошибку? .. $ scope.files [$ scope.files.length] = файл; .. как $ scope.files может иметь lentgh, если это пустой массив? –
Да, это прекрасно. Поскольку я уже объявлял его массивом, его внутренний размер равен 0. –
Вы уверены, что файл читается успешно? Если FileReader получает ошибку, он не может вызывать обратный вызов 'onload'. – Duncan