【发布时间】:2015-11-28 15:33:55
【问题描述】:
我有一个使用标准 Javascript 的工作示例,但我想使用 AngularJS 使其更本机地工作。
具体来说,我需要用用户选择的文件的文件名来更新 span。
这是我使用原生 Javascript 实现的:
<span>
<input ng-model="uploadDownloads" type="file" style="visibility:hidden; width: 1px;" id=uploadDownloads name=uploadDownloads onchange="$(this).parent().find('span').html($(this).val().replace('C:\\fakepath\\', ''))" /> <!-- Chrome security returns 'C:\fakepath\' -->
<input class="btn btn-primary" type="button" value="choose file" onclick="$(this).parent().find('input[type=file]').click();"/> <!-- on button click fire the file click event -->
<span class="badge badge-important" ></span>
</span>
filereader 功能已经有角度了:
$scope.add = function(valid){
if(valid){
$scope.data = 'none';
var f = document.getElementById('uploadDownloads').files[0];
var r = new FileReader();
r.onloadend = function(e){
$scope.data = e.target.result;
$scope.notPass = false;
$modalInstance.close({
'data':$scope.data,
'fileName':$scope.fileName,
'fileExplain':$scope.fileExplain
});
};
/*activate the onloadend to catch the file*/
r.readAsBinaryString(f);
} else {
$scope.notPass = true;
}
};
问题是使用 Angular 而不是 JavaScript 来激活 onclick 和 onchange,以便我的 <span> 使用所选文件名进行更新。
【问题讨论】:
-
这里的确切问题是什么?此外,您的代码不是 AngularJS 的惯用代码。您应该考虑使用 ng-change 和 ng-click。另外,如果你正在修改 DOM,你应该考虑使用指令。
-
我想做和这里一样的东西,但是有角度
-
好的,我现在明白了。你看过这个stackoverflow问题和答案吗? stackoverflow.com/questions/18571001/…
-
不是我不能做的上传,是把文件名加到span
-
你看过这篇文章了吗?:stackoverflow.com/questions/17213526/…
标签: javascript angularjs filereader