私はdropzone
指令を持っています:
function dropzone() {
return {
restrict: 'C',
link: function(scope, element, attrs) {
var config = {
url: 'http://192.168.1.114:8080/api/files',
maxFilesize: 100,
paramName: "file",
maxThumbnailFilesize: 10,
parallelUploads: 1,
autoProcessQueue: true
};
var eventHandlers = {
'success': function (file, response) {
}
};
dropzone = new Dropzone(element[0], config);
angular.forEach(eventHandlers, function(handler, event) {
dropzone.on(event, handler);
});
}
}
}
response
inイベントハンドラーsuccess
は、アップロードされたファイル ID です。
にアップロードされたすべてのファイルの ID のリストを保持したいuploadFileFormCtrl
:
function uploadFileFormCtrl() {
var _this = this;
_this.fileIds = [];
};
これは特定のコントローラーで機能します。つまり、uploadFileFormCtrl as uploadFile
'success': function (file, response) {
scope.uploadFile.fileIds.push(Number(response));
scope.$apply();
}
ただし、ファイルアップローダーを持つ複数の異なるcontrollers
(例: uploadFile
、uploadImage
など) があるため、ディレクティブに特定のコントローラー名を追加することはできません。dropzone
これを実現するために、ディレクティブとコントローラーはどのように通信する必要がありますか?