1

私は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);
            });
        }
    }
}

responseinイベントハンドラー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(例: uploadFileuploadImageなど) があるため、ディレクティブに特定のコントローラー名を追加することはできません。dropzone

これを実現するために、ディレクティブとコントローラーはどのように通信する必要がありますか?

4

0 に答える 0