我试图让角度阅读文件的内容,用户通过<input type="file"
控件选择。虽然角度不具有文件上传控制指令,它应该是很容易解决,与调用$apply
:HTML5与AngularJS上传文件
function MyController($scope) {
$('#myFile').on('change', function() {
var that = this;
$scope.$apply(function() { $scope.files = that.files });
});
}
不幸的是,该事件从来没有发射。这就像选择器无法引用正确的DOM元素:即使选择器找到元素,文件列表始终为空。这也会发生,如果我戳穿js控制台。 DOM检查器改为在其属性中包含文件列表。
这让我发疯,但目前为止它的唯一工作方式是使用分配给全局变量的内联事件处理程序。为什么jquery选择器返回另一个项目?有一些模板编译mumbo-jumbo,角度会混淆选择器吗?
不错。我最终在控制器中定义了一个全局函数,并从内联事件处理程序调用它。由于$ scope在外部闭包中,至少我可以$应用更改。该指令绝对是一种更“角度”的方式来做到这一点。但问题是:为什么选择器返回一个'input'元素,看起来与用户正在进行交互的元素看起来完全一样,但实际上并不是这样呢? – BruceBerry
mmmh这不适合我。如果我运行你的plunkr,我总是得到 文件: { “0”:{} } 我做错了什么? – pomarc
@pomarc IIRC,它用于工作......但似乎现代浏览器不支持字符串化File对象。您必须直接访问属性才能在视图中显示它们。 – Tosh