Javascript 如何在文本区域中显示文本文件内容?
我正在尝试创建一个文件上载组件,并在浏览器的文本区域中显示文本文件内容,以便在处理之前进行编辑 我的输入看起来像这样Javascript 如何在文本区域中显示文本文件内容?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在尝试创建一个文件上载组件,并在浏览器的文本区域中显示文本文件内容,以便在处理之前进行编辑 我的输入看起来像这样 <input type="file" process-file/> <textarea id="file-text" ng-model="fileContent"> </textarea> 我需要将文件内容注入该文本区域,但所有尝试似乎都失败了。我如何才能做到这一点?被视为事件的自定义事件超出了角度上下文。触发此类事件后,系统不会得
<input type="file" process-file/>
<textarea id="file-text"
ng-model="fileContent">
</textarea>
我需要将文件内容注入该文本区域,但所有尝试似乎都失败了。我如何才能做到这一点?被视为事件的自定义事件超出了角度上下文。触发此类事件后,系统不会得到更新其绑定的通知。您必须手动启动摘要周期以同步绑定。您可以在此处使用
$timeout
来运行摘要循环
代码
element.on('change', function (evt) {
var files = evt.target.files;
var reader = new FileReader();
reader.onload = function(e) {
var text = e.target.result
console.log(text); // contents are correctly displayed
$timeout(function(){
scope.fileContent = text;
},0);
};
reader.readAsText(files[0]);
});
以下是更改textarea值的方式: 或者像jQuery中这样:
$('#myTextarea').val('');
你在哪里
<textarea id="myTextarea" name="something">This text gets removed</textarea>
或者在您的html文件中:
<textarea id="file-text">
{{fileContent}}
</textarea>
{{fileContent}}
是元素
jQuery
元素有上的方法吗?上的是jQuery
元素的方法,在你的情况下,我想元素
是DOMElement
不是jQuery对象
我不明白你的问题。onload方法肯定会被调用,因为我看到我的浏览器控制台中显示的文件内容。你能建议一个修复方法吗?应用范围如何?应用?@Rayon它可能会导致当前运行的摘要周期发生冲突,而如果你这样做$timeout
,它将安全地运行摘要周期。。它永远不会与已经运行的摘要周期冲突。。更方便的方法是使用$scope.$applyAsync()
<textarea id="myTextarea" name="something">This text gets removed</textarea>
$("#file-text").val(text);
<textarea id="file-text">
{{fileContent}}
</textarea>