我可以帮您翻译成中文。这段内容是关于编程的,讲解了如何使用指令使AngularJS能够访问文件的内容或属性。在Alex Such的fiddle和blog post中有相关示例。但是下面这段简单的代码并不能实现这一功能。
HTML:
如果我在
(注:我已经把代码放在了a fiddle 中。)
HTML:
<body ng-app="myapp">
<div id="ContainingDiv" ng-controller="MainController as ctrl">
<input id="uploadInput" type="file" name="myFiles" onchange="grabFileContent()" />
<br />
{{ ctrl.content }}
</div>
</body>
JavaScript:
var myapp = angular.module('myapp', []);
myapp.controller('MainController', function () {
this.content = "[Waiting for File]";
this.showFileContent = function(fileContent){
this.content = fileContent;
};
});
var grabFileContent = function() {
var files = document.getElementById("uploadInput").files;
if (files && files.length > 0) {
var fileReader = new FileReader();
fileReader.addEventListener("load", function(event) {
var controller = angular.element(document.getElementById('ContainingDiv')).scope().ctrl;
controller.showFileContent(event.target.result);
});
fileReader.readAsText(files[0]);
}
};
如果我在
this.content = fileContent
这一行上设置断点,我可以看到 content
的值从 “[Waiting for File]” 改变为所选文本文件的内容(在我的例子中是 "Hallo World")。在 controller.showFileContent(event.target.result)
上设置断点也可以看到相同的情况,值从 "[Waiting for File]" 变为 "Hallo World"。
但是 HTML 永远不会重新渲染,它仍然是“[Waiting for File]”。为什么呢?(注:我已经把代码放在了a fiddle 中。)