2

syncイベントをリッスンするために、バックボーン機能をオーバーライドしようとしていますprogress。ただし、xhr.uploadは定義されていないため、以下のコードは機能しません。何か案は?

var Model = Backbone.Model.extend({

  ...

  sync: function(method, model, options) {
    options.beforeSend = function(xhr) {
      xhr.upload.addEventListener("progress", function(event) {
        if (event.lengthComputable) {  
          var percentComplete = event.loaded/event.total;
          console.log(percentComplete);
        }
      }, false); 
    }
    return Backbone.sync(method, model, options);
  },

  ...

});
4

1 に答える 1

3

これが最終的に私たちのために働いたものです:

sync: function(method, model, options) { 
  options.beforeSend = function(xhr, settings) {
    settings.xhr = function() {          
      var xhr = $.ajaxSettings.xhr();
      xhr.upload.addEventListener("progress", function (event) {
        Math.ceil(event.loaded/event.total*100);
      }, false);
      return xhr;
    }
  }
  return Backbone.sync(method, model, options);
}
于 2013-07-09T17:41:54.773 に答える