2012-06-04 4 views
3

Я новичок в backbone.js, и у меня возникли проблемы с предоставлением моей коллекции успешного обратного вызова. Я переопределяю выборку, чтобы иметь URL-адрес с параметром в нем. Насколько я понимаю, я должен уметь назначать обратный вызов успеха в параметрах, которые я передаю Backbone.Collection.prototype.fetch.call() ... но мой код не работает. Fetch работает правильно, но функция обратного вызова не вызывается.Backbone fetch success callback

Вот немного моего кода:

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 
    } 
}); 

Любая идея, что я делаю неправильно? Благодаря!

+0

_error callback_ работает для меня: http://jsfiddle.net/fguillen/vsZUD/, поэтому проблема должна быть где-то в другом месте. – fguillen

ответ

4

@ комментарий fguillen и another SO thread помогли мне понять это. В частности:

Collection.fetch() вызовет сброс() при успешном запуске, который, в свою очередь, вызовет событие «перезагрузки». Любые абоненты события сброса коллекций должны получить событие.

Проблема была не в моем обратном обратном вызове. Оказывается, у меня была проблема в представлении, которое было подписано на событие сброса ChartPointList. Функцию в этом представлении вызывало до, и обратный вызов успеха и выдача ошибки, и, следовательно, обратный вызов успеха не вызывался.

+0

Awesome - прослушивание «перезагрузки» отлично работает. Также [этот поток SO] (http://stackoverflow.com/questions/6659283/backbone-js-fetch-with-parameters) помог мне передать параметры для конкретной выборки, не изменяя URL-адрес или выборку коллекции. – Warpling

Смежные вопросы