<div ng-app="myApp">
<div ng-controller="UploadFilesCtrl">
<input type="file" onchange="angular.element(this).scope().uploadFiles(this)" multiple />
<ul>
<li ng-repeat="name in filenames">
{{name}}
</li>
</ul>
<button ng-click="test()">PRINT</button>
</div>
</div>
JS
app = angular.module('myApp');
app.controller('UploadFilesCtrl', ['$scope', function($scope){
$scope.uploadFiles = function(element){
var files = element.files;
var filenames=[];
for (i=0; i<files.length; i++){
filenames.push(files[i].name);
}
$scope.files = files;
$scope.filenames = filenames;
console.log(files, filenames);
};
$scope.test = function(){
console.log($scope.files, $scope.filenames);
}
}]);
有些原因导致列表从未更新。
$scope
中的 filenames
和 files
变量在 uploadFiles
函数之外从未更新(当我选择文件后点击打印按钮时,会得到 undefined)。
有任何想法吗?
谢谢!
angular.element(this).scope().uploadFiles(this)
我想这可能不会引起 Angular 的 digest。这似乎是指令的工作,但在此期间,您可以尝试$scope.$apply(function() { $scope.files = files; });
来查看是否实际上是一个 digest 问题。 - CodingIntrigue