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>