この例は、Angular-jsに移植したいことをほぼ実行します:HTML5FileAPI。
私はディレクティブのいくつかの例をグーグルで検索しようとしましたが、DOMを大量に使用するか、Angular1.0.4用に作成されていない古い例を見つけました。
基本的にこれは純粋なjsコードです:
var holder = document.getElementById('holder'),
state = document.getElementById('status');
if (typeof window.FileReader === 'undefined') {
state.className = 'fail';
} else {
state.className = 'success';
state.innerHTML = 'File API & FileReader available';
}
holder.ondragover = function () { this.className = 'hover'; return false; };
holder.ondragend = function () { this.className = ''; return false; };
holder.ondrop = function (e) {
this.className = '';
e.preventDefault();
var file = e.dataTransfer.files[0],
reader = new FileReader();
reader.onload = function (event) {
console.log(event.target);
holder.style.background = 'url(' + event.target.result + ') no-repeat center';
};
console.log(file);
reader.readAsDataURL(file);
return false;
};
私が考えることができる唯一の可能な方法は、
edo.directive('fileDrag', function () {
return {
restrict: 'A',
link: function (scope, elem) {
elem.bind('ondrop', function(e){
e.preventDefault();
var file = e.dataTransfer.files[0], reader = new FileReader();
reader.onload = function (event) {
console.log(event.target);
holder.style.background = 'url(' + event.target.result + ') no-repeat center';
};
console.log(file);
reader.readAsDataURL(file);
return false;
});
}
};
});
ただし、(1)機能しなかった、(2)修正する前に、何かが存在するかどうか、または適切に実行しているかどうかを知りたいのですが、
ヒントやヘルプは大歓迎です。