私はモーダルで入力ファイルをアップロードしていますが、そのonChangeイベントを処理しようとしています。私は、このソリューションに従うことによって、入力ファイルのアップロード用のカスタムのonChangeハンドラのディレクティブを作成しました:https://stackoverflow.com/a/19647381/769326角度1.5 ES6入力ファイル変更ハンドラ
これはES6で私のコードです:
class FileUploadOnChange {
constructor() {
this.restrict = 'A';
}
link(scope, element, attrs) {
const onChangeHandler = scope.$eval(attrs.fileUploadOnChange);
element.bind('change', onChangeHandler);
}
static directiveFactory() {
FileUploadOnChange.instance = new FileUploadOnChange();
return FileUploadOnChange.instance;
}
}
class MyController {
constructor() {
this.test = 'Hello, World';
}
doSomething(e) {
console.log(this);
}
}
angular.module('MyApp', [])
.directive('fileUploadOnChange', FileUploadOnChange.directiveFactory)
.component('myFileUpload', {
template: '<input type="file" file-upload-on-change="$ctrl.doSomething">',
controller: MyController
});
しかし、私は、ファイル、this
ときの値を選択すると、私はdoSomething
にログインし、コントローラではなく入力要素です。コントローラコンテキストをchangeHandlerに渡すにはどうすればよいですか?ありがとうございました。
また、ここにはfiddleがあります。