3 Stimmen

Backbone-Fetch-Erfolgs-Callback

Ich bin neu in backbone.js und ich habe einige Probleme mit geben meine Sammlung einen Erfolg Rückruf. Ich bin überschreiben fetch, um eine Url mit einem Parameter in es zu haben. So wie ich es verstehe, sollte ich in der Lage sein, einen Erfolgs-Callback in den Optionen zuzuweisen, die ich an Backbone.Collection.prototype.fetch.call() übergebe... aber mein Code funktioniert nicht. Fetch funktioniert korrekt, aber die Callback-Funktion wird nicht aufgerufen.

Hier ist ein Teil meines Codes:

App.ChartController = {
  load: function(userConceptId) {
    App.chartPointList.fetch(userConceptId);    
  }
};

App.ChartPointList = Backbone.Collection.extend({
  model: App.ChartPoint,
  url: function() {
    return '/chartpoints/' + this.userConceptId;
  },
  fetch: function(userConceptId, options) {         
    console.log("fetch chart point");               

    typeof(options) != 'undefined' || (options = {});
    options.success = this.postProcess;
    options.error = this.handleError;

    this.userConceptId = userConceptId;

    return Backbone.Collection.prototype.fetch.call(this, options);    
  },
  postProcess : function (resp, status, xhr) {
    console.log("postprocess");          // never gets called
    /**
     ... whole bunch of stuff... 
    **/
    new App.Views.ChartView({ collection: this });
  }, 
  handleError : function (resp, status, xhr) {
    alert("could not load chart data!");  // also not called
  }
});

Irgendeine Idee, was ich falsch mache? Danke!

4voto

fdot Punkte 405

Den Kommentar von @fguillen und ein weiteres SO-Thema hat mir geholfen, das herauszufinden. Genauer gesagt:

Collection.fetch() ruft bei Erfolg reset() auf, was wiederum ein 'reset'-Ereignis auslöst. Alle Abonnenten des Reset-Ereignisses für Sammlungen sollten das Ereignis erhalten.

Das Problem lag überhaupt nicht an meinem Erfolgsrückruf. Es stellte sich heraus, dass ich ein Problem in einer Ansicht hatte, die auf das ChartPointList-Reset-Ereignis abonniert wurde. Eine Funktion in dieser Ansicht wurde aufgerufen vor den Erfolgs-Callback und löst einen Fehler aus, so dass der Erfolgs-Callback nicht aufgerufen wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X