如何使用Jquery-file-upload与backbone.js& require.js

时间:2014-08-06 13:19:19

标签: javascript jquery backbone.js requirejs jquery-file-upload

我有一个使用require.js的backbone.js应用程序,我希望在jquery插件之后实现这个: https://github.com/blueimp/jQuery-File-Upload

我遵循此流程: https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin

如果有人可以通过此插件向我发送骨干应用程序工作的示例,或者可以帮助我进行其他推荐。

在您阅读我的代码之前:

Require.js config:

    require.config({
    paths: {
        'jquery'                  : 'common/vendors/jquery_2.1.0',
        'underscore'              : 'common/vendors/underscore_1.6.0',
        'backbone'                : 'common/vendors/backbone_1.1.2',
        'layoutmanager'           : 'common/vendors/backbone.layoutmanager_0.9.5',
        'jquery.iframe-transport' : 'common/vendors/jquery.iframe.transport_1.0',
        'jquery.ui.widget'        : 'common/vendors/jquery.ui.widget_1.10.4',
        'jquery.fileupload.ui'    : 'common/vendors/jquery_fileupload/jquery.fileupload.ui_9.6.0',
        'jquery.fileupload'       : 'common/vendors/jquery_fileupload/jquery.fileupload_5.40.3'
    },
    shim: {
        'jquery': {
            exports: '$'
        },
        'underscore': {
            exports: '_'
        },
        'backbone' : {
            deps: ["jquery", "underscore"],
            exports: "Backbone"
        },
        'layoutmanager' : {
            deps: ["backbone"]
        }
    }
});

My Backbone View:

var define, selector, console;

define([
    'jquery',
    'underscore',
    'backbone',
    'layoutmanager',
    '../../../../common/models/global/model_picture',
    'jquery.ui.widget',
    'jquery.iframe-transport',
    'jquery.fileupload'
],
    function (
        $,
        _,
        Backbone,
        LayoutManager,
        PictureModel
    ) {

        "use strict";

        return Backbone.Layout.extend({
            __class__ : "adPostPictureRow",

            initialize: function () {
                this.template = _.template($('#adpost_picture_row_template').html());
            },

            events: {
                "change .adpost_picture_input_file" : "handleImageUpload"
            },

            handleImageUpload: function () {
                selector = this.$('.adpost_picture_input_file')[0];
                this.uploadProgress = 0;
                this.model = new PictureModel({ files : selector.files[0] });

                var test = $('#adpost_picture_fileupload', this.el).fileupload({
                    dataType: 'json',
                    autoUpload: true,
                    singleFileUploads: true,
                    url: '../upload/adpost/img',

                    done: function (data) {
                        console.log('upload done');
                        _.each(data.result, function (index, file) {
                            console.log(file.name);
                        });
                    },

                    add: function () {
                        // How can access to this function for see the console.log result
                        console.log('test upload ');
                    }
                });

                console.log(test);
            }
        });
    });

由于

1 个答案:

答案 0 :(得分:2)

我在我的骨干应用程序中使用此插件。

它适用于我在render方法中使用Jquery插件。这是我的代码示例。

Html文件。

<form id="Anything" action="the api url" method='post' encrtype="multipart/form-data">
<input type='file'/ accept='.txt'>
</form>

主干视图

render: function(){
  this.$el.html(this.template);
  $("#Anything").fileupload({
      dataType:'json',
      add : this.AddFile,
      fail: this.AddFileFail

});


AddFile : function(data){
  return data.submit();
}

}