Backbone と Require.js で構築されたアプリケーションで Dropzone.js AMD モジュールを使用しています。Dropzone オブジェクトは Backbone ビューの render() 関数内で作成されています。Dropzone.js 参照をロードし、そこからいくつかのファイルを削除するイベントを作成したいと思います。
MyView モジュール:
define([
'jquery',
'underscore',
'backbone',
'dropzone'
], function($, _, Backbone, Dropzone){
var MyView = Backbone.View.extend({
el: $('.products'),
events: {
'click .erase_dropzone_file': 'eraseDropzoneFile',
},
initialize: function(){
Dropzone.options.myAwesomeDropzone = {
init: function() {
this.on("addedfile", function(file) {
console.log("uploaded");
});
}
};
},
render: function(){
myAwesomeDropzone = new Dropzone("#my-awesome-dropzone");
},
eraseDropzoneFile: function(e){
files = myAwesomeDropzone.files;
...
});
return MyView;
});
不明なエラー: 指定された要素のドロップゾーンが見つかりません。これはおそらく、Dropzone が初期化する前にアクセスしようとしていることが原因です。このオプションを使用init
して、ドロップゾーンに追加のオブザーバーをセットアップします。
また、それを管理する方法をさらに2つ試しましたが、どちらもエラーを返しました...
1.
render: function(){
this.myAwesomeDropzone = new Dropzone("#my-awesome-dropzone");
},
eraseDropzoneFile: function(){
files = this.myAwesomeDropzone.files;
}
未定義のプロパティ「ファイル」を読み取れません。
2.
render: function(){
window.myAwesomeDropzone = new Dropzone("#my-awesome-dropzone");
},
eraseDropzoneFile: function(){
files = window.myAwesomeDropzone.files;
}
指定された要素のドロップゾーンが見つかりません。これはおそらく、Dropzone が初期化する前にアクセスしようとしていることが原因です。このオプションを使用init
して、ドロップゾーンに追加のオブザーバーをセットアップします。