AngularJS では、ここで説明するアプローチを使用して入力タイプ = ファイルを処理しています。
- https://groups.google.com/forum/?fromgroups=#!topic/angular/-OpgmLjFR_U
- http://jsfiddle.net/marcenuc/ADukg/89/
マークアップ:
<div ng-controller="MyCtrl">
<input type="file" onchange="angular.element(this).scope().setFile(this)">
{{theFile.name}}
</div>
コントローラ:
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', function($scope) {
$scope.setFile = function(element) {
$scope.$apply(function($scope) {
$scope.theFile = element.files[0];
});
};
});
前述のように、これはちょっとしたハックですが、ほとんどの場合、私の目的には適しています。ただし、アップロードが完了した後にファイル入力をクリアする方法が必要です。つまり、コントローラーからです。
私はそれを完全にハックし、jQuery などを使用して入力要素を見つけてクリアすることができましたが、もう少しエレガントなものを望んでいました。