我在使用Backbone和Require.js構建的應用程序中使用Dropzone.js AMD module。 Dropzone對象是在Backbone視圖的render()函數內部創建的。我想創建一個事件,它會加載Dropzone.js引用,並從中刪除一些文件。Dropzone.js AMD內部Backbone視圖事件
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
選項來設置您的Dropzone上的任何其他觀察者。
我也試過兩個方面如何管理它,但都返回了一些錯誤......
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
選項來設置您的Dropzone上的任何其他觀察者。
你可以發佈墊片配置(假設你使用的是require.js 2)嗎? – tsiki
因爲我使用Dropzone.js作爲AMD模塊,所以不需要使用填充方法。 –